{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy import *\n",
    "import numpy as np\n",
    "\n",
    "def loadDataSet(fileName, delim='\\t'):\n",
    "    fr = open(fileName)\n",
    "    stringArr = [line.strip().split(delim) for line in fr.readlines()]\n",
    "    datArr = [list(map(float,line)) for line in stringArr]\n",
    "    return mat(datArr)\n",
    "\n",
    "def pca(dataMat, topNfeat=9999999):\n",
    "    meanVals = dataMat.mean(0)\n",
    "    meanRemoved = dataMat - meanVals #remove mean\n",
    "    covMat = cov(meanRemoved, rowvar=0)\n",
    "    eigVals,eigVects = linalg.eig(mat(covMat))\n",
    "    eigValInd = argsort(eigVals)            #sort, sort goes smallest to largest\n",
    "    eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions\n",
    "    redEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallest\n",
    "    lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions    \n",
    "    reconMat = (lowDDataMat * redEigVects.T) + meanVals\n",
    "    return lowDDataMat, reconMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataMat = loadDataSet('testSet.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[ 10.235186,  11.321997],\n",
       "        [ 10.122339,  11.810993],\n",
       "        [  9.190236,   8.904943],\n",
       "        ..., \n",
       "        [  9.854922,   9.201393],\n",
       "        [  9.11458 ,   9.134215],\n",
       "        [ 10.334899,   8.543604]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[ 9.06393644,  9.09600218]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataMat.mean(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "lowDMat, reconMat = pca(dataMat, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[ -2.51033597e+00],\n",
       "        [ -2.86915379e+00],\n",
       "        [  9.74108510e-02],\n",
       "        [ -7.67782222e-01],\n",
       "        [  1.02715333e+00],\n",
       "        [ -1.44409178e+00],\n",
       "        [ -2.17360352e+00],\n",
       "        [ -7.73998803e-01],\n",
       "        [ -1.09983463e+00],\n",
       "        [ -1.70275987e+00],\n",
       "        [ -5.39605615e-01],\n",
       "        [ -9.15572638e-01],\n",
       "        [ -2.42669452e+00],\n",
       "        [  2.93613464e+00],\n",
       "        [  3.92702506e-01],\n",
       "        [  2.59205734e+00],\n",
       "        [  4.96435625e-01],\n",
       "        [ -1.52069930e+00],\n",
       "        [  1.25471104e-01],\n",
       "        [  1.41846162e+00],\n",
       "        [  5.89902904e-01],\n",
       "        [  6.69601540e-01],\n",
       "        [  3.25466068e-01],\n",
       "        [  1.18812333e+00],\n",
       "        [  2.07790920e+00],\n",
       "        [  3.24938650e-01],\n",
       "        [  3.41109884e+00],\n",
       "        [  1.92249899e+00],\n",
       "        [ -6.57788287e-01],\n",
       "        [ -3.56836313e-01],\n",
       "        [  5.72240108e-02],\n",
       "        [  1.13444036e+00],\n",
       "        [ -2.47196176e-01],\n",
       "        [  1.14678135e+00],\n",
       "        [  1.62503940e+00],\n",
       "        [ -2.11489136e+00],\n",
       "        [  1.62262452e+00],\n",
       "        [  1.56716102e+00],\n",
       "        [  2.08128929e+00],\n",
       "        [ -1.87248397e+00],\n",
       "        [ -2.59122644e-01],\n",
       "        [  3.27554269e+00],\n",
       "        [ -5.23125148e-01],\n",
       "        [ -9.49849182e-02],\n",
       "        [  2.36167252e+00],\n",
       "        [ -2.44575766e+00],\n",
       "        [  7.38351339e-01],\n",
       "        [  4.57201959e-01],\n",
       "        [ -1.41699869e+00],\n",
       "        [ -5.32635883e-01],\n",
       "        [  1.02282596e+00],\n",
       "        [ -1.12875453e+00],\n",
       "        [ -7.13211110e-01],\n",
       "        [ -3.38626446e+00],\n",
       "        [  3.56810812e-02],\n",
       "        [  1.23323789e+00],\n",
       "        [  1.91755358e-01],\n",
       "        [  1.73904540e+00],\n",
       "        [ -3.03423471e-01],\n",
       "        [  3.77647206e+00],\n",
       "        [ -5.81375052e-01],\n",
       "        [  1.79991218e-02],\n",
       "        [ -3.79395293e-01],\n",
       "        [ -2.34332814e+00],\n",
       "        [ -2.79028309e+00],\n",
       "        [ -7.42478770e-01],\n",
       "        [  3.32781960e-01],\n",
       "        [ -1.73923519e+00],\n",
       "        [ -3.23978914e-01],\n",
       "        [  1.87628361e+00],\n",
       "        [  1.13600716e+00],\n",
       "        [  3.71821790e+00],\n",
       "        [  2.98795377e-01],\n",
       "        [ -2.15069022e-01],\n",
       "        [  1.86189180e+00],\n",
       "        [  9.03742077e-01],\n",
       "        [  6.91749081e-01],\n",
       "        [ -1.50047299e+00],\n",
       "        [ -1.05497444e+00],\n",
       "        [  5.19689141e-01],\n",
       "        [  7.62938979e-01],\n",
       "        [  2.14058040e+00],\n",
       "        [ -2.81440019e+00],\n",
       "        [  2.36346352e+00],\n",
       "        [  1.56402005e+00],\n",
       "        [  3.39072385e-01],\n",
       "        [ -3.01657993e+00],\n",
       "        [  1.04787558e+00],\n",
       "        [ -7.92653343e-01],\n",
       "        [ -1.44976069e+00],\n",
       "        [  2.19344433e+00],\n",
       "        [  6.38752997e-02],\n",
       "        [ -3.03560416e+00],\n",
       "        [  5.80258997e-01],\n",
       "        [ -1.03294677e+00],\n",
       "        [ -4.06263150e-01],\n",
       "        [ -7.71705258e-01],\n",
       "        [ -1.07904354e+00],\n",
       "        [ -9.57210091e-02],\n",
       "        [ -1.76385675e+00],\n",
       "        [ -2.33470825e-01],\n",
       "        [ -2.61831197e+00],\n",
       "        [ -1.36320190e+00],\n",
       "        [ -9.04417393e-01],\n",
       "        [  2.19534328e+00],\n",
       "        [  3.23696800e+00],\n",
       "        [ -1.17484616e+00],\n",
       "        [  2.28103017e+00],\n",
       "        [  4.85221802e-01],\n",
       "        [ -3.52914508e-01],\n",
       "        [ -1.12942177e+00],\n",
       "        [ -2.58533840e-01],\n",
       "        [ -1.51362380e+00],\n",
       "        [  2.74226802e+00],\n",
       "        [  9.44755793e-01],\n",
       "        [ -1.96796286e+00],\n",
       "        [  2.04241744e+00],\n",
       "        [  2.94432626e+00],\n",
       "        [ -6.52031649e-01],\n",
       "        [  1.05496814e-01],\n",
       "        [  2.34907974e+00],\n",
       "        [  6.35084594e-01],\n",
       "        [  8.21233548e-02],\n",
       "        [ -1.25023068e+00],\n",
       "        [  1.53669072e+00],\n",
       "        [ -1.62396831e+00],\n",
       "        [  1.46974307e+00],\n",
       "        [ -1.81787653e+00],\n",
       "        [ -1.27348362e+00],\n",
       "        [ -1.45072614e+00],\n",
       "        [  1.28318570e+00],\n",
       "        [  7.88120021e-01],\n",
       "        [  1.28183580e+00],\n",
       "        [  1.31518762e-01],\n",
       "        [  1.74532342e+00],\n",
       "        [ -1.16566093e+00],\n",
       "        [ -3.46926311e-01],\n",
       "        [  3.34853433e-01],\n",
       "        [ -4.89017300e-01],\n",
       "        [  9.54194625e-01],\n",
       "        [ -1.97872327e+00],\n",
       "        [  1.72393836e+00],\n",
       "        [ -1.53924505e+00],\n",
       "        [  3.38847058e-01],\n",
       "        [  1.98578308e+00],\n",
       "        [ -1.10658540e+00],\n",
       "        [ -2.22493118e+00],\n",
       "        [ -2.28363824e-01],\n",
       "        [ -3.11210520e-01],\n",
       "        [  8.79513451e-01],\n",
       "        [  3.53302123e-01],\n",
       "        [ -8.25473961e-01],\n",
       "        [  1.60085214e+00],\n",
       "        [ -2.70164885e+00],\n",
       "        [  1.02362306e+00],\n",
       "        [  8.29051360e-01],\n",
       "        [  1.62794085e-01],\n",
       "        [  3.96211949e+00],\n",
       "        [  2.90104679e-01],\n",
       "        [ -2.35316382e+00],\n",
       "        [  7.65752344e-01],\n",
       "        [  5.12885212e-01],\n",
       "        [  4.73898120e+00],\n",
       "        [ -2.37977901e+00],\n",
       "        [  3.77423573e+00],\n",
       "        [ -7.49181572e-01],\n",
       "        [ -5.01696499e-01],\n",
       "        [ -2.05346503e+00],\n",
       "        [ -1.52949423e+00],\n",
       "        [  1.59440344e+00],\n",
       "        [  1.88034865e+00],\n",
       "        [  1.26786591e+00],\n",
       "        [  1.04910024e+00],\n",
       "        [  4.86457431e-01],\n",
       "        [ -8.77268948e-01],\n",
       "        [ -2.29259159e+00],\n",
       "        [  5.72077743e-01],\n",
       "        [  1.47752868e+00],\n",
       "        [ -1.03770630e+00],\n",
       "        [  4.82659602e-01],\n",
       "        [ -7.22302862e-01],\n",
       "        [ -8.76979193e-01],\n",
       "        [ -2.39279773e+00],\n",
       "        [  3.40696206e+00],\n",
       "        [  1.04558703e+00],\n",
       "        [  3.27728202e-01],\n",
       "        [  2.53799818e+00],\n",
       "        [ -1.51577259e+00],\n",
       "        [ -1.51398220e+00],\n",
       "        [  1.95340851e+00],\n",
       "        [  4.42021707e-01],\n",
       "        [  2.91236712e+00],\n",
       "        [ -4.40714394e-01],\n",
       "        [  1.89070073e+00],\n",
       "        [  1.06510129e+00],\n",
       "        [ -3.03569677e+00],\n",
       "        [  6.82066736e-01],\n",
       "        [  6.15556391e-01],\n",
       "        [ -1.27272219e+00],\n",
       "        [  2.66634301e+00],\n",
       "        [ -6.69520698e-01],\n",
       "        [ -5.90427420e-01],\n",
       "        [ -6.66474162e-01],\n",
       "        [  2.10739858e-01],\n",
       "        [ -2.21920390e+00],\n",
       "        [  1.30083926e+00],\n",
       "        [ -1.59972048e+00],\n",
       "        [ -9.23471652e-01],\n",
       "        [  1.97515543e+00],\n",
       "        [ -1.44930936e+00],\n",
       "        [  9.59701556e-01],\n",
       "        [ -2.57239968e+00],\n",
       "        [  3.21841789e+00],\n",
       "        [ -7.29746239e-01],\n",
       "        [ -1.57406350e+00],\n",
       "        [  5.94708677e-01],\n",
       "        [ -8.75360499e-01],\n",
       "        [ -8.54425791e-02],\n",
       "        [  6.68120003e-01],\n",
       "        [  1.98511875e+00],\n",
       "        [  9.80940951e-01],\n",
       "        [ -1.56600318e-01],\n",
       "        [  1.31478513e+00],\n",
       "        [  1.02057974e+00],\n",
       "        [  3.30766608e-01],\n",
       "        [ -1.01342792e+00],\n",
       "        [ -1.80282399e+00],\n",
       "        [ -1.05351271e+00],\n",
       "        [ -1.11281913e+00],\n",
       "        [  2.65376731e+00],\n",
       "        [  1.77829535e+00],\n",
       "        [  9.68961257e-01],\n",
       "        [  1.34633444e+00],\n",
       "        [ -1.84549808e+00],\n",
       "        [ -4.20727517e-01],\n",
       "        [  6.68671526e-01],\n",
       "        [  9.83491050e-01],\n",
       "        [  3.32521819e-01],\n",
       "        [ -1.05044108e+00],\n",
       "        [  2.19962593e+00],\n",
       "        [ -2.36473453e-01],\n",
       "        [ -4.93226797e-01],\n",
       "        [ -7.38214593e-01],\n",
       "        [ -4.51814951e+00],\n",
       "        [ -3.30691882e+00],\n",
       "        [ -9.78464894e-01],\n",
       "        [  3.22997258e-01],\n",
       "        [ -2.15629547e+00],\n",
       "        [  8.79965866e-01],\n",
       "        [  3.18534960e+00],\n",
       "        [  1.08728955e+00],\n",
       "        [  7.57690755e-01],\n",
       "        [  1.10098421e+00],\n",
       "        [ -3.71114599e+00],\n",
       "        [ -2.37970615e+00],\n",
       "        [ -1.54934939e+00],\n",
       "        [ -5.65582172e-01],\n",
       "        [ -1.23569163e+00],\n",
       "        [ -1.42276872e+00],\n",
       "        [ -1.41868090e+00],\n",
       "        [  1.18857028e+00],\n",
       "        [ -2.81500445e+00],\n",
       "        [ -5.50925161e-01],\n",
       "        [  1.97663859e-01],\n",
       "        [  2.45198721e-01],\n",
       "        [  1.51629158e+00],\n",
       "        [ -4.75014758e-01],\n",
       "        [ -1.35982988e+00],\n",
       "        [ -3.90584730e+00],\n",
       "        [ -1.73530199e+00],\n",
       "        [  1.74625720e+00],\n",
       "        [ -1.75898823e-01],\n",
       "        [ -2.74434375e+00],\n",
       "        [ -1.17493768e+00],\n",
       "        [ -8.69634992e-01],\n",
       "        [ -3.15766059e+00],\n",
       "        [ -4.02276921e-01],\n",
       "        [ -4.73951109e-01],\n",
       "        [ -2.62347768e+00],\n",
       "        [  8.56835766e-01],\n",
       "        [ -4.23293757e-01],\n",
       "        [ -1.92596011e+00],\n",
       "        [ -1.80764185e+00],\n",
       "        [ -3.85432273e-01],\n",
       "        [  1.84393569e+00],\n",
       "        [  1.08529197e+00],\n",
       "        [  9.41611091e-01],\n",
       "        [  1.16719075e+00],\n",
       "        [  3.00844881e-01],\n",
       "        [  3.02191697e-01],\n",
       "        [ -7.35299979e-01],\n",
       "        [ -1.25824541e-01],\n",
       "        [ -1.34598761e+00],\n",
       "        [ -1.07192842e+00],\n",
       "        [  1.82551672e+00],\n",
       "        [  7.18656998e-01],\n",
       "        [  1.33497774e+00],\n",
       "        [ -9.77862491e-01],\n",
       "        [ -5.51134719e-01],\n",
       "        [  1.60238963e+00],\n",
       "        [ -7.68601439e-02],\n",
       "        [ -2.28237276e+00],\n",
       "        [  5.25412061e-01],\n",
       "        [ -1.48110459e+00],\n",
       "        [  2.72120356e-01],\n",
       "        [ -3.69154640e+00],\n",
       "        [  2.26389094e+00],\n",
       "        [  4.73652776e+00],\n",
       "        [  1.54663062e+00],\n",
       "        [ -4.27749708e-01],\n",
       "        [  7.26314562e-01],\n",
       "        [  5.79505205e-01],\n",
       "        [  5.19871460e-01],\n",
       "        [  6.69632206e-02],\n",
       "        [ -1.10941870e+00],\n",
       "        [ -3.78250183e-01],\n",
       "        [  2.46036086e+00],\n",
       "        [ -4.90507725e-01],\n",
       "        [ -2.06043086e+00],\n",
       "        [  4.27383899e+00],\n",
       "        [ -3.90043691e-01],\n",
       "        [  1.15108400e+00],\n",
       "        [  1.93329453e-02],\n",
       "        [  1.62980099e+00],\n",
       "        [  4.76659153e-01],\n",
       "        [ -1.12593299e+00],\n",
       "        [ -2.30982924e-01],\n",
       "        [ -2.30172730e+00],\n",
       "        [  2.28432481e+00],\n",
       "        [  1.46882092e+00],\n",
       "        [  3.38596432e+00],\n",
       "        [  9.23215325e-01],\n",
       "        [  1.71807389e+00],\n",
       "        [ -6.30401881e-01],\n",
       "        [  2.16494782e+00],\n",
       "        [  4.52956907e+00],\n",
       "        [  3.10086450e+00],\n",
       "        [  7.42207273e-01],\n",
       "        [ -2.20482602e+00],\n",
       "        [ -1.67635383e+00],\n",
       "        [ -1.19305091e+00],\n",
       "        [ -9.60429610e-01],\n",
       "        [  2.79657492e+00],\n",
       "        [ -1.09838330e-01],\n",
       "        [ -1.81282224e+00],\n",
       "        [  6.59021891e-01],\n",
       "        [ -8.94382705e-01],\n",
       "        [ -5.66289445e-01],\n",
       "        [ -6.78909600e-01],\n",
       "        [  1.74465215e+00],\n",
       "        [ -9.33360053e-01],\n",
       "        [  6.47166029e-01],\n",
       "        [  5.37717463e-01],\n",
       "        [  4.75529443e-01],\n",
       "        [ -2.70226774e+00],\n",
       "        [  3.47304551e-01],\n",
       "        [  1.62411857e+00],\n",
       "        [  1.36154544e+00],\n",
       "        [ -1.27827342e-01],\n",
       "        [  4.27106217e-01],\n",
       "        [ -1.28739459e+00],\n",
       "        [  2.80620802e+00],\n",
       "        [ -1.65554464e+00],\n",
       "        [  2.92267556e+00],\n",
       "        [ -4.20390628e-01],\n",
       "        [  8.46128086e-01],\n",
       "        [ -1.97393840e+00],\n",
       "        [  2.28611140e+00],\n",
       "        [  1.11808503e+00],\n",
       "        [ -1.51618330e+00],\n",
       "        [ -1.16538100e+00],\n",
       "        [ -1.38261959e+00],\n",
       "        [  7.35007551e-01],\n",
       "        [ -6.09154791e-01],\n",
       "        [ -2.07643572e+00],\n",
       "        [ -1.34920024e-01],\n",
       "        [  9.89494013e-01],\n",
       "        [ -1.09095886e+00],\n",
       "        [ -3.52718854e+00],\n",
       "        [ -1.41923369e-01],\n",
       "        [ -2.22326108e+00],\n",
       "        [ -3.56236758e+00],\n",
       "        [ -1.49681567e+00],\n",
       "        [  1.02820946e+00],\n",
       "        [  1.68788908e-01],\n",
       "        [  1.71614442e-01],\n",
       "        [  1.77971064e+00],\n",
       "        [ -5.71245796e-01],\n",
       "        [ -4.64299970e-01],\n",
       "        [ -3.45129455e-01],\n",
       "        [ -1.11196574e+00],\n",
       "        [  4.58167317e-02],\n",
       "        [  1.02559629e+00],\n",
       "        [  4.28750710e-01],\n",
       "        [ -1.80596549e+00],\n",
       "        [  1.35455937e+00],\n",
       "        [  2.20293388e+00],\n",
       "        [ -7.11461649e-01],\n",
       "        [  7.62957080e-01],\n",
       "        [ -1.35579955e+00],\n",
       "        [ -4.67378089e-01],\n",
       "        [ -1.47529918e+00],\n",
       "        [ -1.12637213e+00],\n",
       "        [  3.64233734e+00],\n",
       "        [  4.01271625e-01],\n",
       "        [ -5.16093525e-02],\n",
       "        [  5.57609643e+00],\n",
       "        [ -1.14824243e+00],\n",
       "        [  1.70386826e-01],\n",
       "        [  1.89237003e+00],\n",
       "        [  1.74400310e+00],\n",
       "        [ -5.92871371e-01],\n",
       "        [  1.74851068e+00],\n",
       "        [  1.78300731e+00],\n",
       "        [  2.73688530e+00],\n",
       "        [ -5.44653378e+00],\n",
       "        [ -2.34937187e+00],\n",
       "        [  1.12089622e+00],\n",
       "        [  5.12433202e+00],\n",
       "        [  3.07281001e+00],\n",
       "        [ -1.28875406e+00],\n",
       "        [  1.02692749e-01],\n",
       "        [ -8.54526355e-01],\n",
       "        [ -4.17940288e+00],\n",
       "        [ -2.39030595e-01],\n",
       "        [ -5.85102923e-01],\n",
       "        [  2.62283008e+00],\n",
       "        [  1.02563800e+00],\n",
       "        [  2.90970676e+00],\n",
       "        [  1.11402601e+00],\n",
       "        [ -3.88483039e+00],\n",
       "        [  3.63648204e-01],\n",
       "        [ -9.43043301e-01],\n",
       "        [  2.40288175e+00],\n",
       "        [ -2.29314405e+00],\n",
       "        [  5.46656719e-01],\n",
       "        [ -1.98557581e+00],\n",
       "        [  2.38468360e+00],\n",
       "        [  1.39597147e+00],\n",
       "        [ -2.02303705e-01],\n",
       "        [ -5.16784365e+00],\n",
       "        [ -1.88729111e+00],\n",
       "        [ -4.76889804e-01],\n",
       "        [  2.77994099e-01],\n",
       "        [  4.64252059e-01],\n",
       "        [ -1.75737866e+00],\n",
       "        [ -4.22574784e-02],\n",
       "        [  1.49784768e+00],\n",
       "        [  1.01778838e+00],\n",
       "        [  3.03236102e+00],\n",
       "        [  1.83856173e+00],\n",
       "        [ -1.07001728e+00],\n",
       "        [ -2.61995314e+00],\n",
       "        [ -2.10921219e+00],\n",
       "        [ -2.28256740e+00],\n",
       "        [  3.24025107e+00],\n",
       "        [  7.96156933e-01],\n",
       "        [  1.57026656e+00],\n",
       "        [  2.86173419e+00],\n",
       "        [ -4.38384468e-02],\n",
       "        [  3.07172983e-02],\n",
       "        [  1.80874790e+00],\n",
       "        [ -1.04290668e+00],\n",
       "        [  3.98006392e-01],\n",
       "        [  1.53034452e+00],\n",
       "        [ -1.82179816e+00],\n",
       "        [  1.03604415e+00],\n",
       "        [ -2.67551271e+00],\n",
       "        [  8.18227762e-01],\n",
       "        [  1.96066406e+00],\n",
       "        [ -2.65995979e-02],\n",
       "        [  7.97009436e-01],\n",
       "        [ -3.44677667e-01],\n",
       "        [ -4.62560754e-02],\n",
       "        [ -8.26109275e-01],\n",
       "        [  1.70430712e+00],\n",
       "        [  4.11348273e-01],\n",
       "        [  6.23382492e-01],\n",
       "        [  2.70381945e+00],\n",
       "        [  2.49810805e+00],\n",
       "        [ -3.09520765e+00],\n",
       "        [ -2.17488313e+00],\n",
       "        [  2.00524045e+00],\n",
       "        [  1.32972616e+00],\n",
       "        [  3.17655261e+00],\n",
       "        [  1.26716772e+00],\n",
       "        [  1.23916282e+00],\n",
       "        [  6.75159325e-01],\n",
       "        [ -1.69643694e+00],\n",
       "        [  4.22733724e+00],\n",
       "        [  1.70035348e+00],\n",
       "        [ -2.73588104e+00],\n",
       "        [ -3.44309835e-01],\n",
       "        [  9.63049964e-01],\n",
       "        [ -1.40432367e+00],\n",
       "        [  9.98456728e-01],\n",
       "        [ -6.17951394e-01],\n",
       "        [  2.36805187e-01],\n",
       "        [  9.49028717e-01],\n",
       "        [ -3.18580162e-01],\n",
       "        [  7.28033033e-01],\n",
       "        [ -2.09930261e+00],\n",
       "        [ -3.19398809e-01],\n",
       "        [ -1.06274347e-01],\n",
       "        [  5.13844908e-01],\n",
       "        [ -1.80706841e+00],\n",
       "        [ -6.15471814e-01],\n",
       "        [  3.71194990e-01],\n",
       "        [ -8.50152108e-01],\n",
       "        [  1.44318720e-01],\n",
       "        [ -6.88368065e-01],\n",
       "        [  7.27552989e-02],\n",
       "        [  5.25387290e-01],\n",
       "        [  2.09121559e+00],\n",
       "        [ -4.66123649e-01],\n",
       "        [ -1.48112558e-01],\n",
       "        [  1.10341227e+00],\n",
       "        [  9.12913436e-01],\n",
       "        [  2.39160023e-01],\n",
       "        [ -1.51324494e+00],\n",
       "        [  4.20384664e-01],\n",
       "        [  1.38055468e+00],\n",
       "        [ -3.44299063e+00],\n",
       "        [ -1.38166776e+00],\n",
       "        [ -5.35146626e-01],\n",
       "        [  1.18733595e+00],\n",
       "        [ -6.75987608e-01],\n",
       "        [ -2.33762385e-02],\n",
       "        [  1.75785892e+00],\n",
       "        [  1.38741215e+00],\n",
       "        [  1.67927404e+00],\n",
       "        [ -8.55177729e-01],\n",
       "        [  1.04071681e+00],\n",
       "        [ -3.13459901e-01],\n",
       "        [ -4.97239881e-01],\n",
       "        [  2.29345563e-01],\n",
       "        [ -1.71371197e+00],\n",
       "        [ -8.43357779e-01],\n",
       "        [ -9.87852735e-01],\n",
       "        [ -5.74790268e-01],\n",
       "        [ -2.95414892e-01],\n",
       "        [ -1.03375658e+00],\n",
       "        [  1.11811977e+00],\n",
       "        [  1.14691563e+00],\n",
       "        [  3.43884157e-01],\n",
       "        [  9.46722027e-01],\n",
       "        [  1.22077707e+00],\n",
       "        [ -1.24912076e+00],\n",
       "        [  6.47902070e-01],\n",
       "        [  1.94469879e-01],\n",
       "        [  1.25907244e+00],\n",
       "        [ -8.20214120e-02],\n",
       "        [  3.39733239e+00],\n",
       "        [ -2.19433999e+00],\n",
       "        [ -1.38708572e+00],\n",
       "        [  1.35050137e+00],\n",
       "        [ -1.63163934e+00],\n",
       "        [  2.79845021e+00],\n",
       "        [ -1.40355915e+00],\n",
       "        [  2.80963913e-01],\n",
       "        [  1.10121283e+00],\n",
       "        [ -2.24872889e+00],\n",
       "        [  6.88349326e-01],\n",
       "        [  2.80963440e-01],\n",
       "        [  4.38673157e-01],\n",
       "        [  3.83003378e-01],\n",
       "        [  5.66243058e-01],\n",
       "        [ -6.89164557e-02],\n",
       "        [  1.74221676e+00],\n",
       "        [ -9.63088348e-02],\n",
       "        [ -5.42940287e-01],\n",
       "        [  9.82783016e-01],\n",
       "        [ -1.17018035e+00],\n",
       "        [  1.79389667e+00],\n",
       "        [ -1.27303572e+00],\n",
       "        [ -9.04933293e-01],\n",
       "        [  4.03027707e-02],\n",
       "        [  1.80992602e-01],\n",
       "        [  1.08223749e-01],\n",
       "        [ -1.28754078e+00],\n",
       "        [ -5.96987503e-01],\n",
       "        [ -9.95115329e-01],\n",
       "        [ -1.77790604e+00],\n",
       "        [  1.50434943e+00],\n",
       "        [ -1.63286697e+00],\n",
       "        [  4.45879341e-01],\n",
       "        [  1.64106375e+00],\n",
       "        [  1.23242254e-01],\n",
       "        [  2.42123836e+00],\n",
       "        [ -1.58748272e+00],\n",
       "        [ -8.66593170e-01],\n",
       "        [ -2.25929095e+00],\n",
       "        [ -8.49080074e-01],\n",
       "        [  5.88771370e-01],\n",
       "        [  9.05835506e-01],\n",
       "        [ -4.11287025e-01],\n",
       "        [ -6.19813787e-01],\n",
       "        [ -2.07716725e-01],\n",
       "        [ -3.41654393e+00],\n",
       "        [ -7.18173400e-01],\n",
       "        [ -9.39769950e-01],\n",
       "        [ -4.07059017e-01],\n",
       "        [  3.34665514e+00],\n",
       "        [  7.22613674e-01],\n",
       "        [  1.04191676e+00],\n",
       "        [ -1.89747377e+00],\n",
       "        [  1.26020398e+00],\n",
       "        [ -1.43012571e+00],\n",
       "        [  2.36112558e-01],\n",
       "        [  1.44755902e+00],\n",
       "        [ -3.67157332e+00],\n",
       "        [  2.59057878e-01],\n",
       "        [  2.12471488e+00],\n",
       "        [ -5.07145230e+00],\n",
       "        [  2.34800925e+00],\n",
       "        [ -1.86936256e-01],\n",
       "        [  7.24800043e-01],\n",
       "        [ -2.06100007e+00],\n",
       "        [ -2.27516577e+00],\n",
       "        [  1.07510433e+00],\n",
       "        [ -4.09670678e-01],\n",
       "        [  5.21822258e-01],\n",
       "        [ -1.80487938e+00],\n",
       "        [ -2.60831538e+00],\n",
       "        [  2.16618398e+00],\n",
       "        [  4.38638696e-01],\n",
       "        [ -1.80836597e+00],\n",
       "        [  3.72991636e-01],\n",
       "        [  9.63901525e-01],\n",
       "        [ -2.31844554e+00],\n",
       "        [ -1.31393208e+00],\n",
       "        [  2.03206111e+00],\n",
       "        [ -4.06967733e+00],\n",
       "        [ -1.70128516e+00],\n",
       "        [  1.72254088e+00],\n",
       "        [  4.65146233e-01],\n",
       "        [ -2.42332839e+00],\n",
       "        [ -4.72238399e-01],\n",
       "        [ -6.08468375e-01],\n",
       "        [ -2.36037241e+00],\n",
       "        [ -3.24564745e-01],\n",
       "        [  8.26249854e-01],\n",
       "        [ -3.75999166e-01],\n",
       "        [ -3.26667086e-01],\n",
       "        [ -5.22406106e-01],\n",
       "        [ -8.08501039e-01],\n",
       "        [  3.11324078e+00],\n",
       "        [ -1.84031051e+00],\n",
       "        [  1.99369995e+00],\n",
       "        [ -2.72057948e+00],\n",
       "        [ -2.40958971e+00],\n",
       "        [  2.50485014e+00],\n",
       "        [  5.47335862e-01],\n",
       "        [  2.38129700e+00],\n",
       "        [  1.08887695e+00],\n",
       "        [ -3.54943981e+00],\n",
       "        [  3.27854391e+00],\n",
       "        [  1.76193772e+00],\n",
       "        [ -2.33827891e+00],\n",
       "        [  2.59217682e+00],\n",
       "        [  1.85685833e+00],\n",
       "        [  8.83801722e-01],\n",
       "        [ -1.29802933e-03],\n",
       "        [  2.79101915e+00],\n",
       "        [  1.61049425e+00],\n",
       "        [  6.54624843e-01],\n",
       "        [  9.77787978e-01],\n",
       "        [  3.00734688e+00],\n",
       "        [ -1.48572338e+00],\n",
       "        [ -2.96012670e-01],\n",
       "        [  1.59667689e+00],\n",
       "        [  8.51233977e-01],\n",
       "        [  3.47001780e-01],\n",
       "        [  6.06081213e-01],\n",
       "        [ -1.39543967e+00],\n",
       "        [ -1.31417254e+00],\n",
       "        [ -1.65593340e-02],\n",
       "        [  1.92801990e-01],\n",
       "        [  2.11240554e+00],\n",
       "        [  8.64300605e-01],\n",
       "        [  1.82742668e+00],\n",
       "        [ -9.27692964e-01],\n",
       "        [  5.65239772e-01],\n",
       "        [ -8.88522651e-01],\n",
       "        [ -4.51912070e-01],\n",
       "        [  7.92776353e-01],\n",
       "        [ -2.82646499e-01],\n",
       "        [ -7.36845070e-01],\n",
       "        [  4.75262609e-02],\n",
       "        [ -1.02263142e+00],\n",
       "        [ -6.49274244e-01],\n",
       "        [ -8.52467948e-01],\n",
       "        [ -2.26566652e+00],\n",
       "        [  1.15382179e+00],\n",
       "        [  3.62840707e+00],\n",
       "        [  1.48369745e+00],\n",
       "        [  9.77017152e-01],\n",
       "        [  1.47308542e+00],\n",
       "        [  3.33441790e+00],\n",
       "        [ -1.49375844e+00],\n",
       "        [  7.41377504e-01],\n",
       "        [ -1.95905333e+00],\n",
       "        [ -1.79842979e+00],\n",
       "        [ -1.75606204e+00],\n",
       "        [ -2.61665290e+00],\n",
       "        [  1.88397265e-01],\n",
       "        [  1.17067057e+00],\n",
       "        [ -2.11753149e+00],\n",
       "        [ -1.52084251e-01],\n",
       "        [ -2.78480606e+00],\n",
       "        [ -1.26457530e+00],\n",
       "        [ -1.68731398e+00],\n",
       "        [ -3.66036151e-01],\n",
       "        [ -3.11313038e+00],\n",
       "        [  2.17916347e+00],\n",
       "        [ -2.13576640e+00],\n",
       "        [ -1.14935540e-01],\n",
       "        [  2.46289618e+00],\n",
       "        [ -1.74945829e+00],\n",
       "        [ -1.56602350e+00],\n",
       "        [  4.98023787e-01],\n",
       "        [ -6.20821823e-01],\n",
       "        [  6.80181945e-01],\n",
       "        [  1.71535454e-01],\n",
       "        [ -5.47494905e-01],\n",
       "        [ -7.36803853e-01],\n",
       "        [ -2.59720704e+00],\n",
       "        [  2.82570600e+00],\n",
       "        [ -5.70512930e-02],\n",
       "        [  3.40589179e+00],\n",
       "        [ -3.02839451e+00],\n",
       "        [  1.84860098e+00],\n",
       "        [  2.69631673e+00],\n",
       "        [ -4.13600311e-01],\n",
       "        [ -1.77765135e+00],\n",
       "        [ -1.97328948e+00],\n",
       "        [  2.95861423e-01],\n",
       "        [ -1.34007426e+00],\n",
       "        [ -4.52250442e-01],\n",
       "        [  1.12726927e+00],\n",
       "        [  2.25077886e-01],\n",
       "        [  9.44749241e-01],\n",
       "        [ -2.93084150e-01],\n",
       "        [  2.46473545e+00],\n",
       "        [ -1.31083489e+00],\n",
       "        [  7.07946458e-01],\n",
       "        [ -4.84962388e-01],\n",
       "        [ -3.73633751e-02],\n",
       "        [ -6.21184925e-01],\n",
       "        [  2.42635821e+00],\n",
       "        [  4.17971651e-01],\n",
       "        [  6.54325246e-01],\n",
       "        [ -7.77237433e-01],\n",
       "        [  2.35272118e-01],\n",
       "        [ -1.36217337e+00],\n",
       "        [  8.09513985e-01],\n",
       "        [ -1.26281361e+00],\n",
       "        [ -4.51727824e-01],\n",
       "        [ -4.31961457e+00],\n",
       "        [ -2.66954988e+00],\n",
       "        [ -3.37346655e-01],\n",
       "        [ -1.34738677e+00],\n",
       "        [  2.79997366e+00],\n",
       "        [ -1.23437507e+00],\n",
       "        [ -2.14847268e+00],\n",
       "        [ -1.64870337e+00],\n",
       "        [  3.76933693e-03],\n",
       "        [  1.34876002e+00],\n",
       "        [  8.61732828e-01],\n",
       "        [  2.72932446e+00],\n",
       "        [  1.17127558e+00],\n",
       "        [  2.49980775e+00],\n",
       "        [ -3.67601235e-01],\n",
       "        [ -3.27930402e+00],\n",
       "        [ -2.36800578e+00],\n",
       "        [ -4.06684220e-01],\n",
       "        [ -6.27255666e-01],\n",
       "        [ -1.53179416e+00],\n",
       "        [ -8.77559318e-03],\n",
       "        [  7.83064240e-01],\n",
       "        [  4.76786710e-01],\n",
       "        [ -1.73548357e+00],\n",
       "        [  1.22828801e+00],\n",
       "        [  2.29966079e+00],\n",
       "        [  6.07674268e-01],\n",
       "        [ -7.67073691e-01],\n",
       "        [  1.20516676e+00],\n",
       "        [  7.97844668e-01],\n",
       "        [  1.25847739e+00],\n",
       "        [ -3.25265996e+00],\n",
       "        [  2.95473034e-01],\n",
       "        [ -8.74721146e-01],\n",
       "        [  1.18604011e+00],\n",
       "        [  1.05283237e+00],\n",
       "        [ -2.56715960e-01],\n",
       "        [ -3.47446814e+00],\n",
       "        [ -1.85706741e+00],\n",
       "        [  3.06222773e+00],\n",
       "        [  7.37787988e-02],\n",
       "        [  8.01168049e-01],\n",
       "        [ -2.14410586e+00],\n",
       "        [  2.46373437e+00],\n",
       "        [ -4.20304828e-01],\n",
       "        [  7.16531534e-01],\n",
       "        [ -3.93402339e+00],\n",
       "        [  2.40466653e+00],\n",
       "        [ -1.34303582e-01],\n",
       "        [  7.97865579e-01],\n",
       "        [ -1.79823153e+00],\n",
       "        [ -2.31923581e+00],\n",
       "        [  2.03924572e+00],\n",
       "        [ -9.27123043e-01],\n",
       "        [  9.48534302e-01],\n",
       "        [  1.73653909e+00],\n",
       "        [  9.32222462e-01],\n",
       "        [  2.80690040e-01],\n",
       "        [ -4.40429973e+00],\n",
       "        [ -2.00778961e+00],\n",
       "        [  3.23335540e+00],\n",
       "        [  1.69908933e-01],\n",
       "        [  1.07845716e+00],\n",
       "        [ -1.41079779e-01],\n",
       "        [  6.18422650e-01],\n",
       "        [  1.86142282e+00],\n",
       "        [ -1.97121181e+00],\n",
       "        [ -1.05741195e+00],\n",
       "        [ -1.23847330e+00],\n",
       "        [  1.75224785e+00],\n",
       "        [  1.88985417e+00],\n",
       "        [ -2.69148854e+00],\n",
       "        [  2.37674803e-01],\n",
       "        [  1.86595902e-01],\n",
       "        [  4.86298942e-01],\n",
       "        [  2.42239813e+00],\n",
       "        [ -2.62425305e+00],\n",
       "        [ -2.69892765e+00],\n",
       "        [  7.62917555e-01],\n",
       "        [  1.22424425e+00],\n",
       "        [  1.91838284e+00],\n",
       "        [ -1.20133025e+00],\n",
       "        [ -1.00230192e+00],\n",
       "        [  2.49658688e-01],\n",
       "        [ -8.76428114e-01],\n",
       "        [  4.40019462e-01],\n",
       "        [ -1.70035098e+00],\n",
       "        [ -2.40235622e+00],\n",
       "        [  6.16707885e-01],\n",
       "        [  7.47197811e-01],\n",
       "        [  1.88259378e+00],\n",
       "        [ -1.25363641e-01],\n",
       "        [  7.30862291e-02],\n",
       "        [ -1.86521330e+00],\n",
       "        [  1.06030684e+00],\n",
       "        [ -9.58706411e-01],\n",
       "        [ -2.41819053e+00],\n",
       "        [  9.06230130e-01],\n",
       "        [ -1.53847900e+00],\n",
       "        [ -1.69596553e-01],\n",
       "        [  4.25284470e-01],\n",
       "        [ -1.11415654e+00],\n",
       "        [  2.93565709e+00],\n",
       "        [  1.92623667e-01],\n",
       "        [  1.38109678e+00],\n",
       "        [  1.57531054e+00],\n",
       "        [  1.55217685e+00],\n",
       "        [  7.12361752e-01],\n",
       "        [  9.32850536e-01],\n",
       "        [  2.68514127e+00],\n",
       "        [  5.01020927e-02],\n",
       "        [  2.63649830e+00],\n",
       "        [ -5.38135110e-01],\n",
       "        [ -7.07181272e-01],\n",
       "        [  9.67536020e-01],\n",
       "        [ -2.78574107e+00],\n",
       "        [ -1.55204590e+00],\n",
       "        [ -2.86845621e+00],\n",
       "        [  3.55393542e-01],\n",
       "        [  2.30220406e+00],\n",
       "        [ -9.81297623e-01],\n",
       "        [ -1.66412371e+00],\n",
       "        [  3.24627333e+00],\n",
       "        [  7.39922817e-01],\n",
       "        [ -7.56830798e-01],\n",
       "        [  1.22928963e+00],\n",
       "        [ -7.33368584e-01],\n",
       "        [  1.23212113e+00],\n",
       "        [ -1.28650494e-01],\n",
       "        [  2.50215584e+00],\n",
       "        [  5.16339813e-02],\n",
       "        [ -4.32051648e+00],\n",
       "        [ -1.07495847e+00],\n",
       "        [  2.54902550e+00],\n",
       "        [ -2.09738510e+00],\n",
       "        [  3.16085381e+00],\n",
       "        [ -1.96530881e+00],\n",
       "        [  2.23539303e+00],\n",
       "        [ -1.05771472e+00],\n",
       "        [ -9.68946299e-01],\n",
       "        [ -1.25938151e+00],\n",
       "        [  4.18706828e-01],\n",
       "        [  2.47859433e+00],\n",
       "        [  1.71988262e+00],\n",
       "        [  3.90182036e+00],\n",
       "        [ -2.41497576e-01],\n",
       "        [ -2.47902320e+00],\n",
       "        [  1.56810072e+00],\n",
       "        [ -1.40327186e+00],\n",
       "        [ -1.36358194e+00],\n",
       "        [  9.38910677e-01],\n",
       "        [  7.62843279e-01],\n",
       "        [ -6.04873185e-02],\n",
       "        [ -5.03374244e+00],\n",
       "        [  3.86843532e-01],\n",
       "        [  3.05849359e+00],\n",
       "        [  1.20966516e+00],\n",
       "        [  5.56806487e-01],\n",
       "        [ -2.41080045e+00],\n",
       "        [ -4.37390651e-01],\n",
       "        [ -8.20870525e-01],\n",
       "        [  1.47509974e+00],\n",
       "        [  1.30173806e+00],\n",
       "        [  7.50506951e-01],\n",
       "        [  2.31408441e+00],\n",
       "        [ -1.89605674e+00],\n",
       "        [ -2.03330435e+00],\n",
       "        [ -1.41431265e+00],\n",
       "        [ -1.84617606e+00],\n",
       "        [  5.63345560e-02],\n",
       "        [ -1.23696151e-01],\n",
       "        [ -1.59565171e+00],\n",
       "        [  1.42792946e+00],\n",
       "        [ -2.03672420e+00],\n",
       "        [  1.17879420e+00],\n",
       "        [ -1.28309550e+00],\n",
       "        [ -1.53971833e+00],\n",
       "        [  8.03997065e-02],\n",
       "        [  2.15611820e+00],\n",
       "        [  6.09946441e-01],\n",
       "        [ -9.02965533e-02],\n",
       "        [  1.32880436e+00],\n",
       "        [ -1.05268895e+00],\n",
       "        [  4.73860496e+00],\n",
       "        [ -1.83197623e+00],\n",
       "        [  1.21781618e+00],\n",
       "        [  2.05645119e+00],\n",
       "        [ -6.67562139e-02],\n",
       "        [ -1.85148663e-01],\n",
       "        [ -2.38129448e+00],\n",
       "        [ -9.54570119e-01],\n",
       "        [  2.07300378e+00],\n",
       "        [  1.26543445e+00],\n",
       "        [  1.11210073e+00],\n",
       "        [ -9.39844563e-01],\n",
       "        [  1.60641862e+00],\n",
       "        [ -3.94478734e-01],\n",
       "        [  1.62558684e+00],\n",
       "        [ -6.89618554e-01],\n",
       "        [ -1.71597759e+00],\n",
       "        [ -2.12898551e+00],\n",
       "        [ -2.22647626e+00],\n",
       "        [  3.16509371e-01],\n",
       "        [ -1.54171112e+00],\n",
       "        [  1.85164389e-01],\n",
       "        [ -2.94293943e+00],\n",
       "        [ -2.80202806e+00],\n",
       "        [ -2.14267990e+00],\n",
       "        [  4.44297535e-01],\n",
       "        [  1.33021957e+00],\n",
       "        [ -1.27007455e+00],\n",
       "        [ -1.81187889e+00],\n",
       "        [ -2.00408767e+00],\n",
       "        [ -2.78866710e+00],\n",
       "        [  2.61077985e+00],\n",
       "        [ -1.68818839e+00],\n",
       "        [ -3.42886326e+00],\n",
       "        [ -2.32578349e+00],\n",
       "        [  3.19557812e-01],\n",
       "        [ -4.82576149e-02],\n",
       "        [  1.72732091e+00],\n",
       "        [  2.82751419e+00],\n",
       "        [ -2.32313078e+00],\n",
       "        [ -1.24901359e+00],\n",
       "        [  9.00062101e-01],\n",
       "        [  1.54088291e+00],\n",
       "        [ -1.54299587e+00],\n",
       "        [ -1.49774022e+00],\n",
       "        [ -6.32237850e-02],\n",
       "        [ -2.58174453e+00],\n",
       "        [ -8.85797208e-01],\n",
       "        [  1.63897623e+00],\n",
       "        [  6.57907228e-01],\n",
       "        [ -5.63154780e-01],\n",
       "        [  4.61895650e-01],\n",
       "        [  1.14697160e+00],\n",
       "        [ -1.91077747e+00],\n",
       "        [  4.94030110e+00],\n",
       "        [ -1.37359603e+00],\n",
       "        [ -5.01662249e-01],\n",
       "        [ -5.89871235e-02],\n",
       "        [ -1.89787138e-01]])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lowDMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[ 10.37044569,  11.23955536],\n",
       "        [ 10.55719313,  11.54594665],\n",
       "        [  9.01323877,   9.01282393],\n",
       "        ..., \n",
       "        [  9.32502753,   9.52436704],\n",
       "        [  9.0946364 ,   9.14637075],\n",
       "        [  9.16271152,   9.2580597 ]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reconMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10d50c588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111)\n",
    "ax.scatter(dataMat[:, 0].flatten().A[0], dataMat[:, 1].flatten().A[0], marker='^', s=90)\n",
    "ax.scatter(reconMat[:, 0].flatten().A[0], reconMat[:, 1].flatten().A[0], marker='o', s=50, c='red')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsnXeYFFW6/z+nOk5CRQQEHGYAA4IYCGJAFBRlTKyAa1gVF1f04uru3t+6uAZA3WvY3et614iogBEV1wAGVBRBQQlrIKgoigsYCCIz06m6+/z+6OlmQlV1dZrunjmf55mHoae66nTP9HtOvef7fl8hpUShUCgUxY+W7wEoFAqFIjuogK5QKBRtBBXQFQqFoo2gArpCoVC0EVRAVygUijaCCugKhULRRlABXaFQKNoIKqArFApFG0EFdIVCoWgjOFvzYp06dZJVVVWteUmFQqEoelatWrVdSrlfsuNaNaBXVVWxcuXK1rykQqFQFD1CiE12jlMpF4VCoWgjqICuUCgUbQQV0BUKhaKNoAK6QqFQtBFUQFcoFIo2ggroCoVC0UZIGtCFEI8IIX4UQqwx+Nl/CyGkEKJTboanUCgUCrvYWaHPAk5r/qAQ4gBgFPBtlsekUCgKhIAe4brnPyGgR/I9FIUNkgZ0KeW7wE6DH90FXAuopqQKRVuktpYVN9xJ5Z03s+KGv0JtbdKnqAkgv6RVKSqEOBvYIqX8WAiR5SEpFIq8s3QpsqaGgQGdYXoA3+oFyPv/B/HKK3D88cbPqa1lxa33ULl4FSs+GMSwGyZDRUXrjrudI6RMvsAWQlQB86WU/YUQpcDbwCgp5c9CiG+AQVLK7SbPvRy4HKCysnLgpk22KlgVCkW+qK2F7t2NV+QVFbB1K5SXN328YQLwB3RK9QA+l5cSr8t6AsghAT3C9JfXMvXMfnhdjla/frYRQqySUg5Kdlw6KpfeQDXwcUMw7wGsFkJ0NTpYSjlDSjlISjlov/2SessoFIp8M3cuMho1/JGMRmHu3KYP1tZCTQ2itpZSPQBAqR5ANDxOXV2uR9xiPKmmitoKKadcpJSfAp3j/0+2QlcoFEXGhg2I+nrDH4n6evjyy6YPNkwARslXGY0i5s6FiROzP04j0kkVtSHsyBafApYBBwshNgshWuk3o1Ao8oHeqzc+l9fwZz6XF726V9MHU50AckWh3SnkATsql/OllPtLKV1Syh5Syoeb/bxKrc4VirbDk1VDiZqIHaJC8GTVMU0eS3kCyBWpporaIKpSVKFQJAjoEf6+7DsmjJ9GnbuEepcHgHqXhzp3CRPGT+Pv729pIktMdQLIGYVyp5BHWrXBhUKhKGweX74Jvx5hZY9+DJk8hzPWL6Fq11a+2bsb8/sOw+cuwaVHeOKDb5l4fHViAnh5/DRmPTsNIaOU6UHqXR6k0JgwfhpfvL+FX57UN+dqE71Xb3SXN5FuaYzP5cVV3QtXTkeQf1RAVygUCQJ6hIO6xLXjHVhbNY61Df+rbnScPxQGUp8AcsmTVUMZm+RO4ZKcjiD/qICuUCgSXDXiQK4acaDt41OdAHJFId0p5BNbhUXZYtCgQVL1FFUoFNlm5pKN3PHaZ+gRSWnIb3yn4BBMGd0353cKucBuYZFaoSsUiqKnUO4U8o0K6ApFO6OtlcVD6qmitoqSLSoU7Yl2XBbfHlArdIWivdDOy+LbA2qFrlC0B9Isi1f+5sWFCugKRXsgnbJ4lZ4pOlRAVyjaA6mWxS9diuzenYF33cyVH8xj4F3Tkd27w9KlWR+augvIHiqgKxTtgJQMtFrTtVDdBWQVFdAVigIjFyvWlAy0Wsu1cOlSZLfuHNUKdwGtTb7uOlRAVygKiRysWFN2UGwN18LaWhg9GlFXS1lb8y7P412Hki0qFIVCjmSFqRpoxVwLPZTqwRbnyppr4a23IuvqCqPLUTbJszRUBXSFohBonLdueKhUD4AeiK1YjRoz28SsLD4qJZ6fA/Tcy4smRKIs/o06D6MNgjlkybWwthb+8Q/DYA5F7F2ew9+hXVRAVygKgRT7cqZSvm9YFl9by5Jb72HN4lX0Hz6IYTdMhooKdv2wgxP+fKXxOIArxlzHJ5m6Fs6diwTTgB50ONGK0bu8AHqrqhy6QlEIpJK3zjRHayZJXLiQdWMvxm2yOvc53XTbvR1/Q3ombTZsQIRCpj8WUrZel6NsUgAdk9QKXaEoAGx328k0R2uRFpCnnspgzYFLGitcysIhBoV3sLZLRUauhb6e1UiXhzKDiUMCMweP4YEi9C4vhI5JaoWuUBQAtmSFFvrwwKhTCfz0c/ILWUgSBeCKmsvsfC4vvxg/nAVXD8vI2fCP2iFIYRx66l1e7jn2vMzvAvJAIfRWVQFdocgzdmWF+pNPmQZjLRDg2wt+nTz9YpEWSEY2glJAj/DmZr/5az13OgFPCX06lxeVd3k6zbVzgUq5KIqeYvf3tisrXPfuag43CcZuGaV64YvI7t0t0y9WaQEzQkIj5PJkpY3b48s3EZXS+rVqgnEDDyiqzkKF0ltVBXRFcVNby4pb76Fy8SpWfLBHrVFM2O2286O/Bz6LYOyKRhJpGTOJnFUjZSNCmoMXDz2RqadckZWg1FY7CxXK61I9RRXFS8MGoT+gU6oH8Lm8lHhdbdbfe/brnzD2rKGUh/yWx8myMsTdd7eQyAX0CEP+8iYHfflx00bKTjel4ZCh3K7OXcIZU+ZStu/eicdG9+9asN2Biv1uzQzVU1TRtimAIo7WpHlXe7cexG2iRjGTyFmlBbZ26MQDL9y2J8i7PEihMWH8NHYKN69deWzWA2TWg28buFvLFBXQFcVJARRxtCbNg/HNC+/nrPWLcRuoUswkckZpgcV1QX7cHaQ06OOOEy5mxFcrAMGi3oOZd9jI3OV+sx18VTcmQAV0RbFSAEUcrUnzYHzv2Gs47fZluA3SL2bl+UYVo/cs2sCmFxcy/cFrkdFIYnV+9Nb1BA7tz7puA4As536zHXzb2d2aJVLKVvsaOHCgVCiyQeiBB2W9yysltPiqd3ll6MEZ+R5izvCHwvKwqa/JC8+9WfodLhkUmpQg65xuWesukWMvvEMeNvU16Q+Fk59s924pKyoM30d/San079xleP0p8z62d/4UricrKqSsrU39nA89JKNlZYbnjJaVSTlzZurnLDCAldJGjFU6dEVRUghFHPni8eWbOHTjJzzwwm1ENQ23jBLSHDik5Iox17GyRz/7hTkWhUaG2vZMbQdy4bXezu7WrEga0IUQjwghfhRCrGn02F+FEJ8JIT4RQvxLCLG31TkUimxSKEUc2SLVZgiRn3/mkWemUR7yJyxu3dEI3ojOjBdvZ+C+Tg6yW55vEQwba9tZujQ7belyEHxT6sbUxrGzQp8FnNbssTeA/lLKAcAXwHVZHpdCYUrzDcLpIydx39BxTB85iSGT56S2Qs03aax4J32/ihKn8d1JiVMwr+PmRHl+ssnCKhhCTNsuGppRMHp0xm3p7ATfVCe49ny31pykAV1K+S6ws9ljC6WU8el/OdAjB2NTKAyJbxD269aB6qourB09jgXnX83a0eOorupCv24d7K9Q88AuX4iRf3+H2jffbrni7dadB/4yyzqY2V3lNposHp5wPYGdu1ocbxUMGyNDOtLEITGVVEmy4PtslwEpTXBt7W4tY+wk2oEqYI3Jz14GfmXnPGpTVNGWsbVZuGWLfO+4GvlRlz5SdzgMN/KCmlMu/d202AaiAbY2hJcskdGKClnv9MTOKTSpu91Svv56k/EeNvU1OfbCO2StuySxuZrW15QpSd+P5terc8XGVufyyFp3ibz+lCtkrbsk8drqXV4ZraiQcskS07fzoXe/kn3+vED2/NN82ff3z8o/nna1vHfoOPnH066WfX//rOz5p/myz58XyJlLNtr8LRYm2NwUzUi2KIS4HggDT1gcczlwOUBlZWUml1MoChc7uur77kNOnswxxJwNzWq03dEwg/55K/LhvxtK+azK9+Or3AtqTmki43PLKIRCyFNPRbz+OowalZK23aohhc/paal7r61l+c3/pHLJaj5YdhTDb/otj3+0zbSw6e1eg3h75qQmVbB2pIeFUnJfKNgq/RdCVAHzpZT9Gz02AZgEjJRS+uxcTJX+K/JNTkrDTSwIQi+9zA3b90Ig+PORe7FXn2rToGiGrKhANApmpuX7jSo7++/eytS3HkL4TD6WXi9s28Y9H37Hq2u+Tzzs2/ETL99+nqG1gFVADzhczH1lNZeM6r/n/Rg9mpA/gCcSJuhw4i7x8vytM3hEGGdnRy2bz+XP/x8loZY+NWZWBu2JnJb+CyFOA64FhtsN5gpF3slFabhFUYtj1CjO6tYXgFD9j2mdPuIP4Jw9GyZPBuy5+p2yeIV5MAdkJEL4yafY0ulo5jWU9McnigkN1gKNJwpXJII7ar7CfeXg4/h73IUx4INTT0X4fHgafu6JhKGujrF/voyxP/xgXOSzZT4YBHNof9LDTEga0IUQTwEnAp2EEJuBqcRULR7gDRG79Vsupbwih+NUKJJiufrOQnWi4fktLAgceohhmz4GrFe4VjjDOvL3f+DBXWVMuPYiWymGcLfultcTus53jzxOJa8nJjardIgnHGTK4lmGHYZ8Lg/LKwckVEUTP1qA9PmMLRl8PkSjyakxhdDtpy2QNKBLKc83ePjhHIxFoUgfq9W3zdJwywnBICdMRYW14sTk++YkC/ZCD/Hrm37DBz9+zVW3/j9Dp8PGY1+98S2Ls8Wu12Xl+1wZCScmtn1ueZCDusTTIU0nim1bt/Gnd+cYnisqND4ccjIH7dugKpo/33wiAViwwDCgP9P5MMaadEsyszJQGGBn5zRbX0rlosgJcUWHmTrCTmn47t3y3Wv/R9539Fj57rW3Sf+On/YoNJYskdHychlwOKUEGXA4pd9bKgNvv2OpOLH7FW1QoSQ7LiQ0GS0vl3LJkqYKkkZjf/v//UXOPnpM6uMwKbtvrkypb1CmBDWH9Dtc8lfjb25iMxAedarldcKnntbiGoG335G17hLpd7oT74cE6XO4UrcyaKNgU+WiArqiuLHjDXLttdbB7MILm00IHhl0uuXzhw6X710zTcqSEuPg5HTJp598U9a6jX9uN5hPP2miHHvhHTKoGcsYWzynpEQu/d1Ued/RY+VHF1wuo+XlibHXubzS73AlgqPR9SwntmY0lgWaecf88qI7E7LAd6++yfwaIN+9ZmqL31+w1Hiy9TtccuDkOW1GepgJdgO68nJRFBSpVgna8QaxrE50epDz5jWrgAziDof4xbrFDLz7ZqTfuKGEFtY5+6LT+N/jLjCVICbD7/RQ5yljZY9+3DLiNwQdNnQKfj+D7r6FKz+Yx4AnZyDq6hJjL9MDeCM6nrBxEZBpOsRk4zGesx/U0cmMF2/DG9ETPuxl4RDlIT+PPDON8M8/E9AjXOMegN/pNnmtbq5xD2j6u507FxE23nAVQnDhjjXsXeoquh6j+UIFdEXhkI7xk42qyWc6H4Zmkp/VZJSwRQbbg/GGJ8SCozcS5s/vPEpIpCeBLA0Hqdq1FQG8PGAkuiP51p8APA1B1UpKGHC4mlROBjSn6Th9Li++yqoWk+lVIw5kwdXDeG7HIkqCxhNbiVMw6ftVzHrvG3Y6vFz8y1uoc3kTk1PQ4aTOFXt8p+Zh9vvf7Hny2rW4Qi03WwE84RDjvnyPSa/M4M9b3+eqwV3N3xQFoPzQFYVCmiqUZOoILRTm7PNGQkMhTnwD0u9wEXE4eaPPEH6xbnFGQ3fKaNIPktnGZ9DhpO8PG3k08jFT3H1jssFnplKmB9JSxcQpiejMGDyGL/etpGrXVpBwyer5eEz6kUaBF5d9ReUXbxhvKt91V9LV/XJxGEBMKXPVY4aSSoBlG3cwaXhvAMLbd+DA+L2RQNdVy7lSRtptw4pUUQFdkX8yaFBgWTUJaPfd16RQRjT698TfPMjIr1YwasNyQ0lea+COhDnp69XU372ON4Vgwvhp3DH8Em56awYumW4iJ7Yir+99EGuPOYONAR9zbjrHcNKTxCY3TUrGPP1/lOnBlsFz7lykEKYBPehwoVX3YlDVPmyri7+P5lWbg3ruk/h+XdDBAJPzCsAlY3cL7bZhRYqogK7IP2m2k2veZ7N51eRjR9Zw8eoFhpeUDgcX7VjDC0NORi6ameUX1BJLKR+x3DfAnOem88bgUzMK5gBSaHS89CIWjOoP99yDHtENjwtpThxIPOE9E1qL4LlhA8LEmAtASMmTVccYdkSyIqBHmBfYiwMdLkpMxtfidbXB9oLZROXQFfknTY/sZDa6sCdQNqckFGDyAbBDeJgwfhoBhyvtjc1sUiKinLHspZTHEj++uctg8J3FyD/8AVfYOGB6omHcEePNxvimsq9ndSIXb3TdmYPHNHE0tLux/fjyTfyrz3FE7GwEN6CqRq1RAV2Rd9JtUNDcRnfjSTX81PUAqn/awoVfv4/s3sMyEH307U/I3bvpvWMzTw84hUhGWevsIAIBHBH7I6l3uqlzebn/6HEtPOG1uloip9UgdPPVr1luHxqC57p1/FE7BCmMQ0W9y8s9x/5yj/98ChvbdcEwdZ7SFta3QYfTdEJrbw0rUkWlXBR5J5l7oFmVYJNb/KVLkTXjmxhkIQTCJHUhgMOffYRV8hGkAE80go51gGuM3eNSJZXzRoGFBw7lruMv5Jj/rKHqp62UOAWHdo1tZl761IM4M9gbkIC8915+OrerocdL3Aws4Cnh4M7l7L1qObJmkuHGduDoY1pU4ZZ7nDg00cJu4LvyTvxp8SzKDe6uokJwcV1PHtUj2TNXa0PYclvMFsptUdEcO+6BX/Q5nA+vP9nwAxzQI9z2zIdMu/LUWPecZoSFhkOa5OcxV1dEhIZTRi0DrARCmgNPNJKzAJ+MMAIHkqDTjTccot7lpdSlgZSEA6HEpqIRESFw2Pj817lLEimssZ++xYiNK0BKFvUewvP9RxAqLePG4Qdw8bjjjFfk5eW8d9l/88myNfQfvkdBc8+iDU3cHgGiUvL597Uc9Z+1Lf8eEDx21OkA9B12FCfG7RfaAXbdFlVAV+SVmUs2csdrn6FHJKUhv6HUzeUQTBndl4nHVzd5bmDnLh7+7W0cuuxNhv3nU5wGeeJ0A60uHDw66EwGbV7Hkd99YRr4w0LD1dCk2RWNEHA4KYmEU75uLM0gkGB7gzATdKHx2kHHMGLjyqQKH7/by4xzrmZz50qmP3gtMhpJBFmhOfivC2/hwr18nPzgbYYujxIIOZx4IuGEtbCZ/NDs7wEpuXj1AgSy4dpeSi3O09bIqX2uQpEt0m5QsHAhzjPP5DfhiGFDhjhpr5oF/GevrkxY9bKlQsXVUOATH4NDQggNF8bVq0aEEdw57BJeOnQ4b8+cBK0Q0J0yyoiNq0xTUo0pCQW4Zn8dZl4HwT0BOz4RzJj1J3Yd2NfUslfQYKFLcvmh0d+DkeyyTMkYjbHjD5CtL+XlosgKr79u6heSza8P+x4tgw2GXKl4s6R6bNyEavyFd8jpJ02U0UY/i6Z4zlS/fE639GtOqQthekydyyv1iy4yNThL9XVLzL1jDLFjrtbGQXm5KIqRpJK32lo466y0Vt4hLZaDt5NkDDqcHNFjb1NJnxlW+XaIpTpks2NLIjrlIT+znr6BG99+GNHoZ42/zwXecAhnNIxTStP3RQrBK5uDptJSSH2MKckP05S1tkdUQFcUDnYkb3PnIiOpd3CXwLpOVYQ0h63gI6JR1m/ekTVtuiCmSomnaIwoieitvrEq2JN3jV87/prrXR7qXF4eO7KGim++tGccZpNU5IfpylrbIyqgK1odw1X40qXI7t0ZeNfNXPnBPAbeNR3ZvTssXdr0yRs2mLrzgfnqWwD9tm3EZZFvb3wODThs/cqsBtj4hy1Z1Wi+CWkOFlUPZPZRZwJw8er5nPT16pTvVsD89xGXo9rhyaqhRJPIWhUxVEBXtC5Gq/DGXi4JC9tATIZYUwN1dYmn6716U+80LhYC66DoktLe6pzYpmE6Abb1NGO5wxONsKtnbyZ89ArleiCx+dl8BW8HvzO2ym/s+ti4kjVZNWnc3qF58VGq52kvKJWLovUwc1S88sqkXi6Biycw/eW19Ow2mF9pxusQScwoytsKKhEzmr+GVOSL+dKyN0cXDs46wINjhQADRWNIc+KIhg2DR/w1NK4jWNe5l7EcNd6HtJkctTF2mmIbnceynWAbRgV0Retg5ah4112m5emivp53X3iH6Gc/ULlkNZs6duPKs6/j/hdvQ0QjlIVDhIRGVHNw1VnX8o8F/9sqsj+7FEqQBvtjiWgan/mdHGGyEemJhtE1Bxikr3TNyayBZ/DlvpWJgCuAxcPOZG15bHVtKUdtRlqyVqv+sm0cVVikaB1mzkT+7neGaoXmqo/GxFxNJGHNiScaTqz8rhhzHd12b2+xWhu0OVZh6IroCe1zMZHLCcDOuSUw/+DjCbvcnPr5e5QaFB3FN0eN3t96l4ebR07inWFn0ql8T2psdP+uKTkxpk3DXWBjCwirQqZiQRUWKQoLK+mZxdMcDeHeEY0Fj0Qxy4u3c9Etz7PWE1vvV9QF8e8OJm7Nx376Fjcuesiy6Kg10BHEakDtkcvVvJ1gHnS4OPPzpdQ73ZSYtbGT0vR9LdODDAzv4IChPVsngDcmA1/9toLaFFW0ClbSs3QocQrmddzMgquHseDqYVw0tCcDOzr5zedv8dv3n0Z3uph81pScb1ImO78UAr+NtnKtQUhzENSM88nx1Xt8/6EsHGq4N4r1XY0/P+BwMefIM0xdLH0uL78YPzxnwdyyTsFGf9m2jlqhKzLC7uaTlaNiOjQvKLnK/QOTb93jtljv8uCIRhPeKs3JVmojHvTMvF5ePfhYTvlyRZNjrFJMucQVjVDv9OBJ4a4lpDlwRcKEhIY7GqHe6eC8T15HmMxkVu6YGZMsN64KkNQKXZEBSQqB4qupXb6QofTMyvc6GT6nZ09BiYHssUwP4o3ohsEcYsE0koUJJtnEcPpn71EaDjY5Jl+bpAHNwYoD+hMSGnqDv7nE+jV4ohFcMoK7oSCqLBxqsLWVGckRU8ZGnYIqQFIrdEW6JGvq3Gg19eL8g9E6HtlCerbD24Eb3nkkrctrMrpnJWjVwg7jYBXSHHyz9/4cuHNzRgHW6rmxKkzjKSsfQb0kGmH416vQsH+XYHr3IQS3D59AyOlOS46YEjZz4+n66rclVEBXpE6yD9hzzyHHjUsE+/rVXsZrGlMn3cm63gNYWzWOT6Xk8NefI9xgO5sqb/UazN/f38IvT+qLN40NV3c0Qq+dWwpGUthaJKtWbY7ZcWV6kAHUMnv0JHvumJlgo+ds4OIJlv1lJ4yfxhfxv5c2rEtXAV2RwHYxhtUHLBKBs89GBAKJYB/v63nno9cx7f6FXHfuYGa99w08tTWtYC6BzvU/4dcjzHr/Gw5ds5lhpL7qTT/h034wW6HHNz/PvXxY7gdhIzeebgFSW0MFdEWMVIoxrD5gPh9RTTPWlPsDnHjjZFavPJPSH+vo/+2naW1OCsAjIxy+l4PSh+7j2Feeajcr7UIpVGrNFIbeqze6y9vEDz2Oz+XFVd0rfV/9toYdj91sfSk/9AJlyRIZraiQ9S6vlCDrXV4ZraiQcskSw8NDDzyYODYdX+xMPb6jIN+tPkJGyytkIEW/8mL/Cmf43qX65Xe4ZK3LK+tcHilB1rk8stZdIsdeeIc8bOpr0h8K5/zPc9ZrH8tad4nh+GrdJXLW65/mfAz5Bpt+6ElX6EKIR4AzgB+llP0bHusIzAWqgG+Ac6WUP+Vs1lHkjjSKMaw2n+yaX2XK4G8+RcgI5jZd6VMoq2AjWjv7G9E0bj9xAiFHK2x+GhA352rvuXG72Em5zALuAeY0emwK8JaU8nYhxJSG//8p+8NT5BwbG05MnJh4zOwDFnQ4cUfCrRIIBaDZzH+nm9KJ0PrBMxdkOjmV6UEOqN/BwzWXs19F6l4smaJy46mRNKBLKd8VQlQ1e/hs4MSG72cD76ACekFjuuGZYjGG2Qes7w8bOenr1bl8CQlCQkvoonOBpG0Ec7AufLKDz+Xl15ecwqTLT87iqOyjcuOpke6maBcp5XcN338PdMnSeBS5wGTDM6BHmL/bS02SDafGhetmH7DQ+y9z/DcfWXbkyRYuGbUdpIzsbI0eb/6ctrJCh1jbO9EQ2l0ymtJry7d++6oRB7a+J0wRk7HKRUophTArBAYhxOXA5QCVlZWZXk6RKmYFQM89x4q3VrFrxUdoJtJBow+z2Qds9sF7IZ/53xy9iBj1DhelGbZpi5D8j15HgNBwyLbRNMEto8wYPIYv962katdWOtfupOYLYyfF+ETpc3mIqhx10ZFu6f8PQoj9ARr+/dHsQCnlDCnlICnloP322y/NyynSwqITkDz1VAbeNZ3LVr0EQiAhYSJlVcZtZI4U0CP89b0tzBl4umVmWzb6114GvOlzA+7Mzb2cNq7tRLKtdK82o1IPOpyEKnuyl9eBOxzCI8M4TfqyCiCEQItGuWLMdazs0Q9/Q45aUfiku0J/CbgEuL3h3xezNiJF9rDY8BSQWKF5G2xSBSRWcoYbTiapm7mL1jJ54cNcvPqVpEPS0XCRelpGAB39tRlvutpJ1QigW/3ODK+UG3ShxXT+0tzCtjkRoXH5Kw8RDYXxRkKJ98As/eRGQkRPWBQHPKVNctTttRtQMWBHtvgUsQ3QTkKIzcBUYoH8GSHERGATcG4uB6lIE4sNTyOkw4G/90GsPeaMlhtOZqmb22/n/P/+I66Az1agdKYRzBs/P1MKVY6YjHgQjmoaunCgCeOA3njCit11uQGB2+9LHCOa/Ws2ycUtihurnNpzN6BiwI7K5XyTH43M8lgUWUbv1Rvd6aE0bNAY0oCSUIBrqjSuubpZOXdtLXQfaKxVnzwZdwpjKtaAmm/i75snEsZDGJ/Tg8/hpiQSahKYQ8LBmq59+NlbzqI+gxESpix+1Na5WzzeXOWUzJBNkXeUfW4b5smqoWgpqE6CDpexxahV44B0B2dwHt2iAYOiGQI0mqbT4pYI/X5KfeqMAAAgAElEQVTcyHWnX8NzQ86isn57ostTqjSxnLXYj6GmBurqMns9iqygAnobJV4A9OrBx9p+jpCSJ6uOafmDNNvHpcrpF9+F7kxlvd9+KdWDphubnojOew9exmenVTDhklPS7hQVVzkBqhtQkaACehslXgC0vHIAPpN2YY2RwMzBYwybE+jRqOlKPFsr9KDTzdGb1/HYkTWENAdtQzCYOyTWXutOPQQ1NTzTZQDRFBt5GKqcVDegokAF9DZKvADowyEnExXJf831Li/3HPvLlhK12lrkvfflPPftDYe4cdFMLlk9H3c00kSFkU/sjCEf47Tz+5DRKF88MpcJ46fhc3qS9z8FwkJj9lFnMmTynCaSRb1X70Rv0ea0l25AxYAK6HnEsuFthlw14kDmXXksO4SnReu3xjrwxGrs3OkEPCX06VxObUBPjEt/8inCYfPxZasuVALuaDghpdQwD1oSaB3XmNYzG0sFuxOIqK9n/+1bWL9fNVEh7KmQZJQJ/15A3/0r6NetAwd1qcAfCvNmnZsSk831JqkZRV5Rfuj5ohXkX2a+K1srOoGEbnXbm5ocaYLz++5D9RvzWLN4FQ/P68MpWz/hIItNNTtbmNl2LxTEXAC1aKRdrkjsvpf1Li/+ntVc8M2ylN7/kpCfeTvehttvByCwcxfh0f9l2uLvijHX8YmqJi0IVEDPB60k/2rsu7Kt1sNLA08DoCzoY9TaxQgpcQhJ53I3ZZ06cOhXn3DemHMJ62GGhYPoH2o4s+DNYhVMJPbK8ZuTSuf6YsLO5Gd3gpRC0PHSi/j9W4/BCy29eswQAHfdBTfcAOXlrLjjfo4y+Tvwuzx0272dD5TjYUGgAnprk4b/eLoY+q4sXYqs+SX+gE6pHsDn8lKydBbiuefghuvAX5/QlbeG0ZaAhHFUeyaWBhNIZNK7nmTB3O9wEXE4Ez4s43tWg4kBm9V44tbJpZu+NpU+lupBBoV3sLYhNaPIL+3xjjW/5FP+ZaUlPvtsZDj9D2S64Vhi39s8V2MoFHShWQZzSaxWIJlWXwAn/ubBxKbmtY5DUla6iFAooVwZcNIgU+ljvLfogquHKVfEAkAF9NYmC/KvtDdTrSaTcBjh96d2vkakmyMXGTw3W2PIN/EUiieJu2MUweSzrk2q1Y86HFy0Yw39unWg135lvPJ1fYuN8XqXh6DmMJ0Egw4nvs5dgViBmtmEoDZECwsV0HOEWdDVe/W2XO0klX/V1rLihjupvPNmVtzw19iq2y5Wk0k4nNIKt9hXw4WE3YnIgeQf8//OFWOuI2SxSi9tsHBYcOkRXPDJQv74zqP03rGZE3/zINNHTuK+oeOYPnISx135KPUmf4vuSBjtuj8TfGcxf1/2neGEYObIqcgfKoeeCywULFb9OJM2E8hwM9WqezqktsIt1tVwseOKhum2ezu3jPgNN7w9E0+kZZqs3uXFE4ng6N6dcQGdMj1AvcvD1LcfZuqkO5nV+Ux+9oUIRiQTzp3OrGemUqYHWtgIeIM+Qqefjviv2aoFXJEgYg2lW4dBgwbJlStXttr18kJD0G2y6eh1IV55hcDRxzDkL29y0Jcfmze87XM4H15/ckv5V20tdO9uvCKvqLC1mTr79U8Ye9ZQykPpp1YU2SdVWeczJ1/I/ceey8u3n2f4u6xzeXE7Hbj9BndjDX8rM//9I3e89hl6RHLRqvmmk0PA4+XBX1zNwmPOsBzT6P5dVQ49hwghVkkpByU7Tq3Qs0kSBcvTz76XfsPbFJs5NyegR/ibQXPnXPfnVJgjgZAWa7lhV4YZdDg545xh3PpDrGDMaGHw2JE1XLJ6gaELZvxvJVB9QkLSOmDlbsNgDuANmjhwKgoSFdCzSZKge8AbL3NQZfyDkWLD2xQ3U5s3IZi7aC1nfLiAyp1bueOEiwHB/nXbLduRNRk/Ks2SbeIbwlHNAdFIk8YTZu+1rjmZ4uiLX68zXRj89v2nzdNqDX8rV02cmFhR6571+N593nZfWUXhogJ6NkkSdEe6ahmZ5krHKv/d4kPXPIc/8ijO/8U56OFwYiUnNAdTJ93Js3sfwGm3L0t6/WIL5sUwAcXtDuL+CY0bTzTvJiQBv9PNhHOn88mmOvp0LkcTAqOFQXBrL+pXewy140YBOqN9HUVBoQJ6Fkkp6KaI7Q9d843TVfORdwZxQ+IWPP5Bv/PR6xh61ZzYrbvBxlgxUwyvw2qM8Z9FEGzpsB+ruvflLyMmsr28I1pUMm7gAYabkAE9wqW6n8v+dY/heZsH6LjNcvNUXJN9HVXWXzQo2WIWyZVeN/6hSyod27mrZeFQOGgaOMJ6mBEfvx27db/qMe4/eiwh4UBvcGdU0sT8oyGp3P0jo75czjsPTeLY79bTqdxjnJarrWX5n+/ghGdn8NiRNdS5vEllhs39fhrLGps7LioKH7VCzxK5XOmYmWw130xdcccDHG+SwzfCFfBzZGgHizp4qNvW0BNUgCOqQnmuSDUVFD82flf15L9uhq1bCXhKuO75T/Y0am64Mxsc0DmxQaYoEcw+6gwQwnDj/cKjK3npoy2W6Zs4qqy/OFABPUvYDbrp6HUbm2yVBJzs9bUDISV7eR0c2rUCvzemqSl9f2NKTaHjZdsO/zZGT59IScjfQotsRjHkqAuRTN8zGY0iZs9mxbe79+yRXHNx4s6srOG4+AQw4aNXueiW5wl4SpsE6PCuXay44WlGL15F/+Gq2XNbQenQs8Q9izbw6prvkx6XkV7XQOOuOTTEq6/gOXE4+t3/R/S//9tUgtacOncJLz3zNhdcdEpqFaeKlIl/ykKaI2OnSOl245fanjqHBvN4EWi5dyPLyhB3391U0mpRK6GaPRcmdnXoKqBnmeZywaxhUVgUdntwPjOX0PkX4PL7kq4Cgw4nusPFhPHT6LNjM//z7iNoPvsre4U1Vncvye5skkkX07ozmjIFbrst9n0WCtQUrY/dgK42RbNJJj4rybAw1nKEgsgxY3DbCOYA7/c8nJpL/sF5H73O75Y8nrdgXoyZejtjtvodBJ1udGFuihVyOFnc8wiCjtT0UGbna+EPpJo9t2lUQM8WS5ciu3dn4F03c+UH8xh413Rk9+6wdGl2zm+lcSeVLjYeovvsw+KHJjF27SK61v/U6oG1uca60Im37NvQsTshR2bbTt5wiDVdepm+dk8kzNr9+/Cr825toWgKaQ7T55k93kJdpZo9t2nUpmgWCOzcBaNOxev35axpRTJjLbtICSNWvWl78zMXFEsgjxNPgVT99F3GTT/qXR629ehF/Y5vDQt/6l0e/tOxW5PN9QO3f8s+gd10rt3J0ZvXGHuuON0gJRFNs1RX5bJWQpF/1Ao9U2pr+faCX6MFjUvnU72NNbPdtdK4W9G8GfTKA/qlfA5FLKi7ZDTzuxmh8fpFv0MK44+eFBrLB51Mv24dqK7qgjzoIC78dCGjP3+PEzZ9hNtkwzusOTj+ioeT6siVt3nbRq3QM6FBLVBd58Nl0pwgpdvYZiX7g/90BdPf+ZY/nXZIQuP++NM34Inotle5QYeLOUedzpf7VjK/7zCeePr6olshtxUkIKIRNn34iamx1oTx09gh3Lx65bF4Az7ofjoEfYlzNLYCENDkeTsrOvLpaWNZ2xCwm+vIVVVo20cF9HRp5KxodYtq+zbWoGTf+Y+pDOlzDC/OPw6t45Gs7NGPYZMeZsmDE/FG9BaniLn3xWRxjT+kK3v04+Cu5VRrGj917YH87ot2H9TT1dE3D6i6iDXStnMuAZSGQ8x6dhpDJs9JXq/w2VumZm8hh5P3Kg/ntYOP2/M8TZhaAgDMXLIxZ7USisJABfR0sXBWbIwtcyMj291wLIXzi3WL8W1YznjNwU2T7uD5DtXcOmIit7zxAGBg5CQEIc3J7KPO5JFBZzHyqxWM/PJDyg49hIvPO4HA2uRGXO2BbExoEhBSpnwuISUXfL2MZSeNsa7MtNjA9ETCbO99CGtHj7Nd0dm4QE1VhbZRpJSt9jVw4EDZmvhDYTll3sfSHwpn/+TXXitlbI/R8CuoOWStu0SOvfAOedjU16zH8NBDMlpWZnk+CTJYWiaH/naOrHWXJD3W7/LIek+JrHN5pARZ5/TIaJLnqK9W/JoyJemfWOiBB2W9y2v4/HqXV4YenJHFP2hFIQOslDJ5jM1oU1QI8XshxFohxBohxFNCCOMGhfkgl5pwrHuDhoTGi4eeaN/cyGIl1phIOMLNy5/AXMW8B48epDToTygpyixMutoL4VZ+B8x+S7Z6x6I2MBWpk3ZAF0J0B64GBkkp+wMO4LxsDSwjcq0Jx/rDFnJ5uO+ca6iu6kK/bh04qEuF5W2s1eTQmJJQgKO/XUNJKLl0sb0H7+aENAcv9z2BkIm6JKvXEhp1Li9+p8fw53aCsW2HTdWcWdGITHPoTqBECKEDpcDWzIeUIUnawGVDE25HLZBQKthQC1h5nTen4octrWKMJYGw0BJSvWKeICTw63FT+Xe3Qxj9xfsQsdaSS2I9JyLCgdtEvWRGSHPw4qEnMvWUKzj0x41pq0lyafamaLukHdCllFuEEH8DvgX8wEIp5cKsjSxdMuy9aYdsfthaTA7RCGXhkOnxdgNrpkFYAN/svT+9ftpCsQvYfA4XY9a+w3GbPmZRr6MYveGDpM0lnhpwGmM+W4w7xYbaYc3JnWdMxi/dGf19qA1MRTqkHdCFEPsAZxP7+9oFPCuE+JWU8vFmx10OXA5QWVmZwVBt0gqlzdn8sD2+fBNaXS29d2zmqQGj2CdQi1vXGfXlcoSUeKLJzxHP1SZ0yQg0KRNKmXSQQHUbCOYAZRGds9Yvxt2ob6cVEhi39i0eO7KGy1a+CDae0/jZ4YjkkO4VGXmMXzXiwPRdORXtlkxSLicDX0sptwEIIZ4HjgWaBHQp5QxgBsTcFjO4ni1ao7Q5mx+2fVZ/wPv3XIaMRprcll829kYmrniBk75enfQcAlh6wAA+6X4Q3+zdjUW9BzFx5YtMXPECUgg8kTA+p5uScMh2YBIUn6bVKli7Gyxr7erFvRGdy1a+mPJdjhSC09Yups9Zv2Pi8dW5c99UKAzIZIfoW2CoEKJUCCGAkcD67AwrfQpZGdCirL+2lrE3TqI06NujRtGDlIf8zHjxdtYdNSyxGWaFBIZu/hSHlPzQoRPvPDSJi1fPTwQxXXPgDqtb89agTA9yZGhHbPWdY6WVQtGctAO6lPID4DlgNfBpw7lmZGlcaZEPZYCZ90oLjD7cFlamJU7BET32ARuqDAE4peTyD+Yx65mbKA/tkSt6ImFc0QhO7LemK1biRVb1zlg77EwVLem8X/EuUFe5f8i50kqhaE6banAxc8lG7njtM/SIpDTkN96McgimjO6bHWVAbS1Lbr2HNYtXEe3dh4n/nIK3494tjzPpNOQcczbOp58yPf3Lh53EyHXvURKxnypp7/hcHhYcfDzbyvehc+1Oar54j1IDV0M7pLOxXOcu4cW5b3PhxSZdoFQTCUUa2G1wUWxpUktaVRkQ917xhxgWDhL6UEN77i54+WUYNWrPcaYySog8+ww+h5vSSEtVS73Twynrlhp6tijMKdWDDPnPGr7u2J0VvY8k+sX7OblOPNjH//U7XEQcTiaMn0b/R57KudJKoTCiTQX0VlMGGARpt4xCKIQ89VTE66/vCeoWMkotEqEE41SNQ0aRmobJj9s9ZqtnCfT8+Qd6/vwDw79eTdDhxOf0gCDllXoyaeO/ux7Il50q+amkIuFm6XOXcMriFaqJhCIvtKmA3mrMnYuMRAw/8ALgrLNg+/bYbXWSTkMQC0I+p5uycCihcnmjzxB+sW5xbsZfYKST2rDTuSemVglT53Rw+4mXMuTbNZz5+dKsGXO9MOBk5g4+s8njnUtc+HtWU7/KS5lqIqFoZVRAT4cNGxA+n+mPZTCIuPVWuP12W52G/C4PrzTkfeP5/rGfvknN5+8ZdqdJl3jgDGoO3FHjCSkfRBAIYsZC6Y7JalJwyQghh5v3qo/k5I0r0s6pN6f3fuV8duvoFo/Pfr0z8l/3GD7HlvumQpEmqmNRGui9eqMLc02xAPjf/4W6Oludhkr1ILJrVxacfzVrR4+jJvI9U96dbdqdJr6NHRZawgMdIOhwWtp2hYXG270G8n7Pw1OqOM31trkTyZYO+2Vc2WqGJxJmUHgHg/QdtoK5ndcrgNA3m1qom5QHiyKfqBV6GjxZNZRfahquiPmHUgpB+Mmn+PvWyqSdhuJSt3MvHwZbtxKuPhlnqOVGaeOK0JDQiGoOJp11Hfv6a6natZXvyjtx46KZuE2qS10yyqbuB1LqEsivV9uqmJx1RA3nf/pGTjdnJbD/7u05O3/Q4eSMc4bh0gS+d583vFsKak42duzOtvJ9GPrtGtP3ME69y8NXe3VtUb6vPFgU+USt0FMkvgK7bOyNlis5EQqx9t3ViQ/38Vc8TNBhnDlNFDwtXYrs1QuHQTCHWCCPB2G3jOKN6Nz/4u10CNbxQ8W+dKvdxtouvUzHVe/ycO4vhjJmmb0KyKDDScTp4tFBZ1Hn8uJr0HdnGwG4cngfIKKSF5Z9xTOdDzO9W9KdLi459xbe6HM0wqQ2oDHx3p/NFVNxpVW8J+ja0eMSd1523TcVinRpUzr01mDmko3c/up6wlG4/q0ZXLbyJcPgWO/ysGTyDfyzejhRKfn8+1qO+s9aU/e9zQccyLJ7L0GkUU3YeOVulUuuc3l5+OSLuGLho4a5+cYSPG9EJ+h0441v1CKYc9QZ9P/+S4Zt+ihrG4vxcWeD5udr4XEjNG4ffglTFs9u8TuIP+4OhxIVtkYEHU50hyvmmNjncD68/mRV0q/IOe1Sh94aBPQI+5Z7+HF3kH8c/yvO/3gh5Qa38FJoLOh7AgsuH5YoeLK6Db/gk4WE9XBa6ofmyg4jJPDFvpVc9dpMHCaTuAA27LM/B+zeHlOINLg+xqtOL/9gHjtKO6QxQuPx5GJTNiw0BBKnbNoaLv4ablj0ME8NGEWF7ucnbwc2dKrk7V6DeHvmJMptOCu+3/NwJp89RaVOFAWJCugpEte5L/j0Oz7/HiacO9101f3ppjoCeoSAHuHwvRwcuex1On73LTv3r+SJERfSoXNHqhtSAEeu3I4rkJpVayoI4MjvkzeH7vPTd6apISeSLr6fMxpHGAg7nCC0xISRLQSxfQIrPBGdS/+9gHqXB6E5mDrpTn714xpbXaCCDicfDRlJdVWXxGMqdaIoJFTKJU1SshlgS5PS/6DDiZCS9edN5PAH/gYVFegPzkD/7TWGG3bZTk3kiubVk0Y//2zfnrxXfUTCljaT69h93JKKiljV5j/+kfTQkObgqVc/4pJR/VO9ikKRESrlkmPs2gyEd+2CC5pWlcbz1wOenIF86UnEq69adi3SNQdRCR7ZOtrxdNMhYTR+Kqmgs994FS+APru2sKhyDPUfexJpkGyNLZ0xy2iUyI4dhJLUCkhg5uAxPJCk05BCkU9UQE8T2zYDM2ealv4LgLo6ZE0N9101h5fHT2PO3JsoadTQWQKuNIqA4oEvJLSYLUEKpHqtCDG5VMThoLP/Z8ugGwX6dd8LadMJsfGqPxeI+nrWBV30SlIrUO/ycs+x56GrvLmigGnXskXb1reZsGaNael/HF0PM+Ljt1m/XzVRIVpscqYSYEMIgg4XMwedzX1Dx/HSoSfis+GpngnxMca16smKfFiwgLerj0LXHCSbqkSjf1N9L+zgc3l5qdbLY0fWENIciSKt+AQScLpjBUHnTifgKaFP53KVN1cULO13hV5by4pb76Fy8SpWfDCIYTdMjuVTs8nSpcgHHgCsA5E74OeI4Ha8X72HlsaeRuNVrBuJH8n5nyzk0vHT2NSjD6fdtSyd0dsmlSArgeO++QhXo3ZweW1CLaP87s1HEEjc0QhBh5OQcPBe1RFs6HRAE9MtlyYYN/AAtTpXFCztc1PUwJ+8xOtCvPIKHH+87dNYtherrYXu3W11qfG5PGw+4RS8K1dQ+fMPqb4a8/N6Sjnu6sfovfVLZj07DY8eTKoCaevEU1DJeq/WuUs44ZrH8blLAOhQ4mK/Cg+j+3dVvT4VrY7aFDXD1J88ADU19psPJFvhW9jmNqdED3LgW/Ozvkp1Cslpaxfz1GGjGDJ5DjcvvJ8x697BmUZQz1RpY+f5CfMwhxN3JJyD9Mqe5hff7N0NTzjElMWPGh5b5tJYffBPMPGcLI9Cocgd7S+HbtH2TUajMHdu8nMsXZq8vZiFbW4cn8uTCGJ2gleq91LugJ/Bvu/p160DFZ32ZuopVxAwyacnO7cAImm0dAtqDsIIW69RAKu6HcytJ11Gvctr6/ypvCdRoXHvOdckSvEHyN2mShvlW64oRtpfQLfyJ7fzIW68wm+QuZXqgVjJfk0N1NUBMUdGs6AU1Jy83Wsgrxx8XGITzg5Bzcm3HTrbPl4Cv3jvXyw4SnDe4APwe0sTLoDxjdKQ5miorrQmCumt7IWG7rLnAVPv8rB42Fk8MegMJpw7vYlboRkC0E0mmniwb+x0uCXs4InLjmbB1cMYM344PpPfkc/lRa/uZWvcCkWh0O4Cut6rd2YfYpsr/CerhoKJFM4dDfP8CeORXbrisfAN2TOuWED61fl/4d5jf5k0yMURgNB1GD2afaIhHJpgZY9+XDHmOrRoNJZPjkaICGFrhZ4MSUwz33jMrx58LCU29eZSaGwccUZinEMmz2H6yEm83WsgQYdxdtDn8hAxmRSDDhczBo9h+shJnHTZg/TesZk/vPUIL111M9TWWlobJwzTFIoiot0F9Iw/xElW+OHPvyCgR1g09w0cYd0wUArgtienc3rNYNNABbEAGRaCWUedwZDJc1jZox8LDhlmW8OdOE9dHf0e/SflHifHlgZ5eN4teCN6Qp/usaFzt2O1+9Cgs7l+1GTuGzqOaSMnMWTyHJZXDjCdgOLvjd/hSqyg39hUR6/9yti71EXPnp1ZO3ocN//qJnRTp0qNy8beaOg9/qvzbuX2kZcRPehAFj98BTe9NYMrP5jH2Mf/juzWnUVz31C+5Yo2RbtSuQT0CEP+8iYHffkxs56ZiisaxhMJxxz0NCcTzp2e1EHPqkQ/pDnYeMpZrJr0R87+5QhD06449U4PL5z/W37x5N2UJvEa93lKueiW5/G5S/a4Nj4zFU84ZFu1EtU05h94LKd/uRzNZMMxU/ngfUPHcefwCXTt4GHfcg9RKflxyzYW332RofGVrjl47IjRfNa5V0IauHfYz+93foRv3Wf0Hz6IwX+6giH/90Hsd2bimbOyRz9T+4W9w34+vH8Cbl/LSbjOXcKQyXMArK0bjq+2VjQpFDlGqVwMiDcfsMKfpBLQqkTfHY1wwFuv0GfRAqRF8wuAsnCQwOcbsBNCS5yCeR03M/Ogk7jjtc+AWBPpVHLaIhrlrM+XWh9j+2wt8Tk97Ox6AP26dYhJ+wZ35Z2b/8n6Jat57MgaLlq9AIE0DMYeh0AIwSk/fM7dj12PjEYp0wP4Vi9Au+dWDh07leUWTpUCqOi0N2tHt7RfGLXsXTBJkTmQTPpuBQuPOcPUusEfCrdOzYJCkQXaVUCPux7OeW56kxW2JxJbqc95bjoX3fK8aSVgvLnFy+OnMevZaWgy2qKlWZmBptmIkHCwV30tDpIH5fhmbaD6hIbxT6MkRadCuznwdIO6JqNsOvkMFkwe1qACGsjggM6JeiCh+Z591BkgRItV8LWj+zLx8E7Q/ZcQ3NOrNSYnhUeemcZFtzxPwNPFNPCa6sO3zAcTF8uSUIBrqjSuuXqY+QtreC0DAzrDGiYZef//pFyzoFC0Bu0qoF814kCu2rgY6RRgEHfjK2FGnGr4/ObtxW5+437OWvuOoVdKsuAoBdSVd7DVBFoC4f277Rl/ARYHvXLwcSz5Lkhg5y68DSqgsoafxaWBEz56tSEwl7ZcBVvo9hO/l4kTUx6XVZNun8uLq7qXuQd9tmoWFIpWol0FdCAj2WJzh0XZpSvuNcbBNakMUHOwZZ/9CTqctoL6h9/s5Lj4+EPZ6VrfnJjWXJg2wDCj3ulmeeUAQpEoK+54gOPTCcyvz8xMTmqCVYosvgl+idmTLSYZGY0i5s5Na5JRKHJFu1O5ZCJbvGrEgSy4eljiy0rHHHC60S3kgFEhCIYlupZ8ThXA+g/XEdAj6L16WypjwkIQcDgTqo1UQnO9y8NLhwyzPL8RUnOwYsjJ9N2/A6WbNqYVmDOWkxoQT5GlrWTJtGZBoWhl2l1Az6b22OpcYc3BE0fUmK7Uy/QgXeu2M+Hc6ficbsvA27jD/JNVQy0ngYDTw/FXPML0kZN4t+cRtl8LxHTgt424zFQiCLEJwqhgZ4dwM+/KYxlw0qC0AnMuNOHNU2TTR07ivqHjmN4gqVzZo19iE9yIXEwyCkUuaVcBPdUVm5W9rp1zre/Sy1SDXe/y8M3e3VjZox+DfvsEt544kbBJQIt3mN/tD/G3Zd8x4dzp+JtNAhLwOd1MOHc6O8o78vGp57C2a29bm5xBhzMx5h/LO7Z8TU43AYeLlw45nhf6DmdJz8N5u3ogtw+/tEVgTCcwZ7ySNiGeIuvXrQPVVV1YO3pcouy/uqoL/bp14KAuFaab4KrwSFFstKscevMVW1wC9115J0Ay8ssPOXDnFp55uxsXH1NlKVUzO1djBcfnnau5cdFMw7FIBGXREH9651H+07E7Tx9xKh93P8hUa71DuClxOfEFY8EnIjRCmgNPNEIYQVhzcPk5N7CyRz8AenuidK77iZDmsOxiD00bHwOGr2lrh0488MJtTcY2eMs6vq86mK2HDQSgNqDzSCMVkNHr+MKg44+d9zKdhsy2m5AY0FzRZPe1KBT5JKPCIiHE3sBMoD+xReKvpZSm5tv5Liy6Z9EGXl3zfZPHDv3qE6Y/eC0yGkl8YN1C4HRq+PUSIawAAA2uSURBVPWoqb2u0bkaE5VyTxFQs4AgZEwDIwUNj3mRQjBh/DTWde5lWuRyXJ9OfPP198y/4zzDQp06l5e/nTiBw7esp+aL9wlLKEtWtOTysKjfCfzH04Hv9+vB/EOG4dh7L/ar2HNnURLwMeemcyhtJClMUFGRUHuk1Ge1UWBO9l7GaU3r2nRfi0KRC+wWFmUa0GcDS6SUM4UQbqBUSrnL7Ph8B/QWpOBZDjQJXskwCwjflXfiT4tnGVaRxitCA55SgzM2BLSNi5G/+53hZp0E9AbrWbvEUjUeysJBc1/4mTPNr1lWhrj7bpg4sSADc7q0pdeiKH5yXikqhNgLOAGYACClDAGpVbvkmxQ8yyE1qZpZE+lRy+bjMLmgLb21lbwPLIN5zBtGwyWj+FweSvRY79J4MZSpxtqijV5jtUcmKY5Coy29FkX7IZMcejWwDXhUCHE4sAq4RkppbQJeSNjwLG9MKlI104CwZT6EjD1e7JzfqlAmGQJYUnUkn3WppnPdTkZ/tpQyg4rTJhNXkjZ69S4vorIK43sKhULRmmSicnECRwH3SymPBOqBKc0PEkJcLoRYKYRYuW3btgwulznNVStWsjQjsiFVs7qmBPSw9QamlfIiGfUuDx8fPZIF51+N7NLVMJhDo4mlthZZU4MIBk3vYlwRnReWfWU/baVQKHJGJgF9M7BZSvlBw/+fIxbgmyClnCGlHCSlHLTffvtlcLkMqa1lxQ13Unnnzay44a9J/bCNyIZU7cmqoUiTawpA3ntvoklGc8zkfUGH01YBkRQaHS+9yH5zh9mziQSMq1LjenR3NMLZT/8fsluzjk0KhaLVSTugSym/B/4jhDi44aGRwLqsjCrbGLWMs/DD9jnd+JyerHtkxwPynCNrTANwOBxFf/Ipw5+ZFcoka9lW73S3GH8yjfWbdR7kH/6AUzdZxbMnBVOmBxF1TTs2KRSK1idTHfpvgScaFC4bgUszH1JmtPCttjBYuveJGxkyeY6h9hlMPLLT0EPHaWzfa3ZfUKoH+Pjd1Rx+ufFra77R+mmDPPKbfbrx0PO3oMko7mgEn9ODJqO8cvBxLK8c0GT8s9//hnstNNZXnn0d9193RazbUQoofxOFIr9kFNCllB8BSaU0rYaRb7WFkqW5H/Y7tUF2+/cEsZcGnkaHEhf7VXhaugOmQTwgB6t6Ub/aY9iguN7l4ccuPQyfb7TROnPJRt58aB73v3gbESHwRiKEhIYmo1w29kaWVh+FADp38FBdHrvjWPbVDstCnjPXv9uglU8N5W+iUOSXtlMpunQpsqampW/1mWeaKlls+WFnkXhAnn3wXsh/3WN4jBQaW0892/Y5Iz//zCPPTKO0UaGRW0YhEmXGi7cndO2N9dL3LNrAtrr4ZNKhhcf4oE92UGahojGzBk5qR6tQKHJK2wjoFmkVOe95/E4PpQaNJ/IRgLJdUj7p+1XJ/d2bpUCSaax1z3rq333eMKgHNQcSgTfa8i4lqR2tQqHIKW3DnKshrWJEWAg0k4YQ+TBYenz5JnyhcNoOgC3IgcWrlRJHd7q5bNxNqrGyQlGAtI0VukVQcwX8vHzoiYz68oOCMFiK/Pwzl65/i47ffcvO/Sv590k1rPXG7ivSydNn1JHHADt3ENk20VIoFNmhTQR0q6BW7/KwvHIAN5w6Of8BaOlSLr+gBn9A32P69dbMjPpTZtSRxwA7zocAHUyaMkP6m8YKhSIz2kRAtwpqrkiEvdA5tGuFdWf3XJOD/pS5sHg186ABm02ZFQpF3sjIbTFVsuW22FhrDjDkL29y0JcfNwlq8VcliK3SSz1uxKtNV8ItNOu5xKZjYUqnVBavCkW7IOdui3mjmdZ844iaJimCsZ++xY2LHmrS1KFMD4IebLoSNtKsN2pgkXVysHlpdzXd2imQVp0oFQpFguIK6AZa86P/eStrfnMH63oPADrQ6bsORJwuCLVUWiQqGQ8+2FiznkEuOxnZ3ryEArV4be2JUqFQJCiegG6ag4a/PnrdnpV3MnvatWvh97/Pai7bDtnevCxIzIq7cjhRKhSKPRSPDt1Cay6jUZg7F0jeqT28fbut82STXDVBLigaT7gNdyGlegBRq0y7FIrWonhW6DZz0MlWwuuDTg7Lci47GblqglxQWHjmKNMuhaJ1KJqArvfqTcTpxmvQlCHgdOOo7kXEhoyv389b6Z3lXHYyCnXzMqvkYNNXoVCkRtEE9Gc6H8YFJh12POEQT3Y5HL+NlfDnnav548IZhufJVS67IDcvs0wuNn0VCkVqFEUOPaBH2PDoXAIO45AQcLj44uGnqA3oHNSlgn7dOlBd1YW1o8ex4PyrWTt6HNVVXei7fwX1ntK2ncvOE8kaZrS2Z45C0R4pihX648s3sf+2LZREjBsulER09t++BVeJmwUWVrjxQpw2ncvOA7moWFUoFKlTFAE9oEcI96ymfpV5Uwh/z2rCSXLQ7SKXnQfaxaavQlEEFEVAv2rEgczWf2XZFKLjpRdxSZI8dTHlsoup2lJNlApFYVAUXi4BPWLo19Lklr7P4Xx4/ckFH/xsUVvLklvvYc3iVfQfrqotFYr2jl0vl6II6O3KhKqh2rKJxa7XpaotFYp2TJsy52o3t/Q5sNhVKBTth6II6MWU+84IVW2pUCgyoCh06O0GVW2pUCgyQAX0AiKZsZhe3auVR6RQKIoJFdALCFVtqVAoMkEF9AKhXVjsKhSKnFIUm6KtRT6LeVS1pUKhyBQV0OPkuXVau5FmKhSKnFEUhUU5RxXzKBSKAsZuYZHKoavWaQqFoo2QcUAXQjiEEP8WQszPxoBaHZu9ShUKhaLQycYK/RpgfRbOkx9UMY9CoWgjZBTQhRA9gNOBmdkZTuujinkUCkVbIdMV+j+AawHjnEURoIp5FApFWyHtgC6EOAP4UUq5KslxlwshVgohVm7bti3dy+UEVcyjUCjaEmnLFoUQtwEXAWHAC3QAnpdS/srsOYUmW2xXPusKhaJoybkfupTyOuC6houdCPw/q2BeiKhiHoVC0ZZo15Wi7cZnXaFQtAuyEtCllO8A72TjXAqFQqFID1UpqlAoFG0EFdAVCoWijaACukKhULQRVEBXKBSKNoIK6AqFQtFGUAFdoVAo2git2uBCCLEN2JSl03UCtmfpXK1FsY252MYLxTfmYhsvFN+Y28J4e0op90v2xFYN6NlECLHSTilsIVFsYy628ULxjbnYxgvFN+b2NF6VclEoFIo2ggroCoVC0UYo5oA+I98DSINiG3OxjReKb8zFNl4ovjG3m/EWbQ5doVAoFE0p5hW6QqFQKBpRlAFdCLG3EOI5IcRnQoj1QoiC7RMnhDhYCPFRo6/dQojf5XtcyRBC/F4IsVYIsUYI8ZQQwrjxaoEghLimYaxrC/X9FUI8IoT4UQixptFjHYUQbwghNjT8u08+x9gYk/GOb3iPo0KIglOOmIz5rw2x4hMhxL+EEHvnc4yNMRnvLQ1j/UgIsVAI0c3u+YoyoAN3A69JKQ8BDgfW53k8pkgpP5dSHiGlPAIYCPiAf+V5WJYIIboDVwODpJT9AQdwXn5HZY4Qoj/wG2AIsb+HM4QQffI7KkNmAac1e2wK8JaU8kDgrYb/FwqzaDneNcA5wLutPhp7zKLlmN8A+kspBwBf0NCYp0CYRcvx/lVKOaAhZswHbrJ7sqIL6EKIvYATgIcBpJQhKeWu/I7KNiOBr6SU2SquyiVOoEQI4QRKga15Ho8VfYEPpJQ+KWUYWEws6BQUUsp3gZ3NHj4bmN3w/WxgTKsOygKj8Uop10spP8/TkJJiMuaFDX8XAMuBHq0+MBNMxru70X/LANsbnUUX0Il1h9sGPCqE+LcQYqYQoizfg7LJecBT+R5EMqSUW4C/Ad8C3wE/SykX5ndUlqwBhgkh9hVClAI1wAF5HpNdukgpv2v4/nugSz4H0w74NfBqvgeRDCHEX4QQ/wEupC2v0ImtHI8C7pdSHgnUU1i3qYYIIdzAWcCz+R5LMhryuGcTmzy7AWVCiILtFyulXA/cASwEXgM+AiJ5HVQayJjkTMnOcoQQ4npiTe2fyPdYkiGlvF5K+f/bu2PXKKI4iOPfaRRsxYCFKWzSCjZiIYKCUUQLQRGLGLBIYWUhWIl/g21SqiAiam9lo41aiZVCTOEpGm0ECWQs3ivk4prtXnaZT7N3x+4xHMsc93vL3gFK1ut9jxtioa8Ba7Zf1eePKAW/050GXtuetA7Sw0ngo+2vtjeAx8DRxpn+y/aK7cO2jwHrlFnpEEwk7Qeo2y+N84ySpKvAWeCKh3Wt9j3gQt+dB1fotj8DnyTN1ZdOAO8aRurrMgMYt1SrwBFJeySJ8hnv2IVnAEkzdTtLmZ/fb5uot2fAQn28ADxtmGWUJM0DN4Fztn+1zrMdSX//c/154H3vY4f1ZVVIOgQsA7uAD8Ci7fW2qbrVGf8qcND2z9Z5+pB0B7hE+Yn6Brhm+3fbVN0kvQD2AhvADdvPG0faQtID4DjlbnoT4DbwBHgIzFLuRHrR9vTCaRMdeb8Dd4F9wA/gre1TrTJO68h8C9gNfKu7vbS91CTglI68Z4A5YJNyTizVda3t32+IhR4REVsNbuQSERH/lkKPiBiJFHpExEik0CMiRiKFHhExEin0iIiRSKFHRIxECj0iYiT+ANzTruXytHVFAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10eb8a2e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lowDMat, reconMat = pca(dataMat, 2)\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111)\n",
    "ax.scatter(dataMat[:, 0].flatten().A[0], dataMat[:, 1].flatten().A[0], marker='^', s=90)\n",
    "ax.scatter(reconMat[:, 0].flatten().A[0], reconMat[:, 1].flatten().A[0], marker='o', s=50, c='red')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def replaceNanWithMean(): \n",
    "    datMat = loadDataSet('secom.data', ' ')\n",
    "    numFeat = shape(datMat)[1]\n",
    "    for i in range(numFeat):\n",
    "        meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i]) #values that are not NaN (a number)\n",
    "        datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal  #set NaN values to mean\n",
    "    return datMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[  3.03093000e+03,   2.56400000e+03,   2.18773330e+03, ...,\n",
       "           1.64749042e-02,   5.28333333e-03,   9.96700663e+01],\n",
       "        [  3.09578000e+03,   2.46514000e+03,   2.23042220e+03, ...,\n",
       "           2.01000000e-02,   6.00000000e-03,   2.08204500e+02],\n",
       "        [  2.93261000e+03,   2.55994000e+03,   2.18641110e+03, ...,\n",
       "           4.84000000e-02,   1.48000000e-02,   8.28602000e+01],\n",
       "        ..., \n",
       "        [  2.97881000e+03,   2.37978000e+03,   2.20630000e+03, ...,\n",
       "           8.60000000e-03,   2.50000000e-03,   4.35231000e+01],\n",
       "        [  2.89492000e+03,   2.53201000e+03,   2.17703330e+03, ...,\n",
       "           2.45000000e-02,   7.50000000e-03,   9.34941000e+01],\n",
       "        [  2.94492000e+03,   2.45076000e+03,   2.19544440e+03, ...,\n",
       "           1.62000000e-02,   4.50000000e-03,   1.37784400e+02]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataMat = replaceNanWithMean()\n",
    "dataMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[  3.01445290e+03,   2.49585023e+03,   2.20054732e+03,\n",
       "           1.39637663e+03,   4.19701314e+00,   1.00000000e+02,\n",
       "           1.01112908e+02,   1.21821502e-01,   1.46286166e+00,\n",
       "          -8.41022364e-04,   1.45750799e-04,   9.64352780e-01,\n",
       "           1.99956809e+02,   0.00000000e+00,   9.00537052e+00,\n",
       "           4.13086035e+02,   9.90760281e+00,   9.71443926e-01,\n",
       "           1.90047354e+02,   1.24810340e+01,   1.40505424e+00,\n",
       "          -5.61839361e+03,   2.69937843e+03,  -3.80629973e+03,\n",
       "          -2.98598136e+02,   1.20384473e+00,   1.93847681e+00,\n",
       "           6.63862799e+00,   6.94995323e+01,   2.36619744e+00,\n",
       "           1.84158914e-01,   3.67318939e+00,   8.53374687e+01,\n",
       "           8.96027854e+00,   5.05826386e+01,   6.45557870e+01,\n",
       "           4.94173705e+01,   6.62212736e+01,   8.68365766e+01,\n",
       "           1.18679554e+02,   6.79049093e+01,   3.35306617e+00,\n",
       "           7.00000000e+01,   3.55538904e+02,   1.00311650e+01,\n",
       "           1.36743060e+02,   7.33672811e+02,   1.17795811e+00,\n",
       "           1.39972231e+02,   1.00000000e+00,   6.32254197e+02,\n",
       "           1.57420991e+02,   0.00000000e+00,   4.59297121e+00,\n",
       "           4.83852271e+00,   2.85617210e+03,   9.28849328e-01,\n",
       "           9.49215035e-01,   4.59331177e+00,   2.96024147e+00,\n",
       "           3.55159094e+02,   1.04231429e+01,   1.16502329e+02,\n",
       "           1.39899270e+01,   2.05421090e+01,   2.71318156e+01,\n",
       "           7.06668523e+02,   1.67154436e+01,   1.47437578e+02,\n",
       "           1.00000000e+00,   6.19101687e+02,   1.04329033e+02,\n",
       "           1.50361552e+02,   4.68020404e+02,   2.68770019e-03,\n",
       "          -6.90304601e-03,  -2.93904731e-02,  -7.04141283e-03,\n",
       "          -1.36425794e-02,   3.45832793e-03,  -1.85307842e-02,\n",
       "          -2.11533377e-02,   6.05489307e-03,   7.45206660e+00,\n",
       "           1.33107910e-01,   1.12783186e-01,   2.40187154e+00,\n",
       "           9.82420294e-01,   1.80781502e+03,   1.88703232e-01,\n",
       "           8.82753687e+03,   2.43984625e-03,   5.06900958e-04,\n",
       "          -5.40511182e-04,  -2.91479821e-05,   6.00256246e-05,\n",
       "           1.71266496e-02,   0.00000000e+00,  -1.81426650e-02,\n",
       "           1.54010250e-03,  -2.12684177e-05,  -7.23894939e-06,\n",
       "           1.11460602e-03,  -9.78907348e-03,  -1.46325879e-05,\n",
       "          -4.97885971e-04,   5.39525945e-04,  -1.76591928e-03,\n",
       "          -1.07885971e-02,   9.79992532e-01,   1.01318253e+02,\n",
       "           2.31818898e+02,   4.57537676e-01,   9.45424186e-01,\n",
       "           1.22527122e-04,   7.47383792e+02,   9.87129930e-01,\n",
       "           5.86259079e+01,   5.98411666e-01,   9.70777090e-01,\n",
       "           6.31086305e+00,   1.57964249e+01,   3.89838960e+00,\n",
       "           1.58296598e+01,   1.57947047e+01,   1.18495571e+00,\n",
       "           2.75072850e+00,   6.48477599e-01,   3.19218228e+00,\n",
       "          -5.54228306e-01,   7.44976444e-01,   9.97808344e-01,\n",
       "           2.31854464e+00,   1.00404309e+03,   3.93919785e+01,\n",
       "           1.17960948e+02,   1.38194747e+02,   1.22692949e+02,\n",
       "           5.76030246e+01,   4.16766964e+02,   2.60779039e+01,\n",
       "           0.00000000e+00,   6.64156471e+00,   4.16944801e-03,\n",
       "           1.20008115e-01,   6.36214058e-02,   5.50100319e-02,\n",
       "           1.74109904e-02,   8.47130792e+00,   0.00000000e+00,\n",
       "           6.81426790e+00,   1.40474028e+01,   1.19673318e+00,\n",
       "           1.19264706e-02,   7.69797091e+00,   5.07171484e-01,\n",
       "           5.80885769e-02,   4.71043478e-02,   1.03965074e+03,\n",
       "           8.82680511e+02,   5.55346326e+02,   4.06685048e+03,\n",
       "           4.79715463e+03,   1.40204473e-01,   1.27942492e-01,\n",
       "           2.52025559e-01,   2.78888179e+00,   1.23578275e+00,\n",
       "           1.24396805e-01,   4.00453674e-01,   6.84330332e-01,\n",
       "           1.20064112e-01,   3.20112516e-01,   5.76191954e-01,\n",
       "           3.20112771e-01,   7.78043614e-01,   2.44717752e-01,\n",
       "           3.94759898e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "           1.90132567e+01,   5.46770115e-01,   1.07805428e+01,\n",
       "           2.66611704e+01,   1.44815453e-01,   7.36574074e+00,\n",
       "           0.00000000e+00,   1.79362898e+01,   4.32114183e+01,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           2.87084453e-01,   8.68848718e+00,   2.00927098e+01,\n",
       "           5.57358744e-01,   1.15320564e+01,   1.76001923e+01,\n",
       "           7.83935897e+00,   1.01704633e+01,   3.00731427e+01,\n",
       "           3.22181689e+01,   9.05012172e+00,   1.28122998e-03,\n",
       "           2.03761755e+01,   7.32643165e+01,   2.95643818e-02,\n",
       "           8.88657809e-02,   5.67549579e-02,   5.14320804e-02,\n",
       "           6.03461439e-02,   8.32684381e-02,   8.10755671e-02,\n",
       "           8.34835386e-02,   7.16353856e-02,   3.77146539e+00,\n",
       "           3.25401929e-03,   9.21283186e-03,   6.07175495e-02,\n",
       "           8.82118698e-03,   1.22846571e+02,   5.93704485e-02,\n",
       "           1.04105659e+03,   0.00000000e+00,   1.91250479e-02,\n",
       "           1.78444089e-02,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   4.79137380e-03,   4.57488818e-03,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   5.75500911e-03,   1.72972332e+00,\n",
       "           4.14874189e+00,   5.33735915e-02,   2.51712189e-02,\n",
       "           1.06522017e-03,   1.09650967e+02,   4.28481174e-03,\n",
       "           4.64511487e+00,   3.32162022e-02,   1.39432036e-02,\n",
       "           4.03848117e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           7.05869147e-02,   1.95046767e+01,   3.77786568e+00,\n",
       "           2.92602905e+01,   4.60565981e+01,   4.12981474e+01,\n",
       "           2.01812462e+01,   1.36292426e+02,   8.69321275e+00,\n",
       "           0.00000000e+00,   2.21074449e+00,   1.11745828e-03,\n",
       "           4.10568690e-02,   1.80335463e-02,   1.50940575e-02,\n",
       "           5.76984026e-03,   2.80398428e+00,   0.00000000e+00,\n",
       "           2.11979533e+00,   4.26001784e+00,   3.67529284e-01,\n",
       "           3.92365729e-03,   2.57859597e+00,   1.23426975e-01,\n",
       "           1.99262285e-02,   1.44869565e-02,   3.35551157e+02,\n",
       "           4.01814750e+02,   2.52999118e+02,   1.87922837e+03,\n",
       "           2.34282698e+03,   6.38044728e-02,   6.02668371e-02,\n",
       "           1.18386198e-01,   9.10145942e-01,   4.03342300e-01,\n",
       "           4.03438339e-02,   1.32076486e-01,   2.64916794e-01,\n",
       "           4.86231162e-02,   1.28920945e-01,   2.18414240e-01,\n",
       "           1.28921264e-01,   3.04751788e-01,   9.73443167e-02,\n",
       "           1.60050830e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   5.97697701e+00,   1.72629119e-01,\n",
       "           3.18877050e+00,   7.91603608e+00,   4.31049170e-02,\n",
       "           2.26372739e+00,   0.00000000e+00,   5.39341980e+00,\n",
       "           1.33321717e+01,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   8.32318618e-02,   2.59348455e+00,\n",
       "           6.21586579e+00,   1.68363869e-01,   3.42692511e+00,\n",
       "           9.73638641e+00,   2.32748160e+00,   3.03757994e+00,\n",
       "           9.32895772e+00,   1.46735066e+01,   2.73209366e+00,\n",
       "           2.86483024e-04,   6.19850826e+00,   2.32171463e+01,\n",
       "           7.95837581e+00,   5.77021164e+00,   8.91396541e-03,\n",
       "           2.47057032e-02,   2.52522359e-02,   2.32020739e-02,\n",
       "           2.75842515e-02,   2.33557356e-02,   4.03305250e-02,\n",
       "           4.19209981e-02,   3.45430979e-02,   1.29862861e+00,\n",
       "           9.98842444e-04,   2.44292035e-03,   1.98399489e-02,\n",
       "           2.94486280e-03,   3.99364063e+01,   1.83829156e-02,\n",
       "           3.33319601e+02,   0.00000000e+00,   5.19853035e-03,\n",
       "           4.81399361e-03,   3.77328635e-03,   3.17162076e-03,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   1.60083067e-03,   1.57073482e-03,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   1.82568306e-03,   5.41039891e-01,\n",
       "           1.28544827e+00,   1.14269953e-02,   8.28079132e-03,\n",
       "           3.39246969e-04,   3.51550911e+01,   1.33835354e-03,\n",
       "           1.43186752e+00,   1.09559948e-02,   4.53280153e-03,\n",
       "           1.33989534e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           2.42075048e-02,   6.73061495e+00,   1.23199731e+00,\n",
       "           5.34093188e+00,   4.58043030e+00,   4.92934410e+00,\n",
       "           2.61608635e+00,   3.09113164e+01,   2.56126897e+01,\n",
       "           0.00000000e+00,   6.63061590e+00,   3.40434852e+00,\n",
       "           8.19090550e+00,   3.20259235e+02,   3.09061299e+02,\n",
       "           1.82126134e+00,   4.17452351e+00,   0.00000000e+00,\n",
       "           7.76604459e+01,   3.31546854e+00,   6.79631247e+00,\n",
       "           1.23385761e+00,   4.05850083e+00,   4.22074746e+00,\n",
       "           4.17184365e+00,   1.84216001e+01,   2.23583049e+01,\n",
       "           9.93676327e+01,   2.05519304e+02,   1.47339455e+01,\n",
       "           9.37066556e+00,   7.51326633e+00,   4.01678550e+00,\n",
       "           5.47010519e+01,   7.06439420e+01,   1.15266165e+01,\n",
       "           8.02080971e-01,   1.34525868e+00,   6.33941060e-01,\n",
       "           8.95042784e-01,   6.47089911e-01,   1.17500319e+00,\n",
       "           2.81895338e-01,   3.32270115e-01,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   5.34681558e+00,\n",
       "           5.46097126e+00,   7.88374157e+00,   3.63663346e+00,\n",
       "           1.23256854e+01,   5.26366571e+00,   0.00000000e+00,\n",
       "           2.83838014e+00,   2.91974136e+01,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   6.25209066e+00,\n",
       "           2.24173047e+02,   5.66229270e+00,   5.36775176e+00,\n",
       "           9.63879680e+00,   1.37888406e+02,   3.94268471e+01,\n",
       "           3.76370497e+01,   4.26257335e+00,   2.01321546e+01,\n",
       "           6.25792146e+00,   1.28122998e-01,   3.28339423e+00,\n",
       "           7.55381309e+01,   0.00000000e+00,   3.18418448e+02,\n",
       "           2.06564196e+02,   2.15288948e+02,   2.01111728e+02,\n",
       "           3.02506186e+02,   2.39455326e+02,   3.52616477e+02,\n",
       "           2.72169707e+02,   5.13540452e+01,   2.44267312e+00,\n",
       "           8.17094292e+00,   2.53004639e+00,   9.56441991e-01,\n",
       "           6.80782572e+00,   2.98658964e+01,   1.18210299e+01,\n",
       "           0.00000000e+00,   2.63195864e+02,   2.40981377e+02,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           5.57635084e+01,   2.75979457e+02,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           6.78897814e-01,   1.73890219e+00,   1.80627286e+00,\n",
       "           1.17284399e+01,   2.69599930e+00,   1.16100797e+01,\n",
       "           1.47288659e+01,   4.53896426e-01,   5.68778162e+00,\n",
       "           5.56039734e+00,   1.44345750e+00,   6.39571704e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "           0.00000000e+00,   0.00000000e+00,   3.03423489e+00,\n",
       "           1.94282809e+00,   9.61162809e+00,   1.11208435e-01,\n",
       "           8.47086262e-03,   2.50920128e-03,   7.61140313e+00,\n",
       "           1.03963030e+00,   4.03546477e+02,   7.56798715e+01,\n",
       "           6.63256465e-01,   1.70133129e+01,   1.23071155e+00,\n",
       "           2.76687988e-01,   7.70387353e+00,   5.03657460e-01,\n",
       "           5.77465372e+01,   4.21690451e+00,   1.62307001e+00,\n",
       "           9.95008940e-01,   3.25708174e-01,   7.24434227e-02,\n",
       "           3.22849559e+01,   2.62729683e+02,   6.79640726e-01,\n",
       "           6.44498454e+00,   1.45609505e-01,   2.61086963e+00,\n",
       "           6.00863988e-02,   2.45241692e+00,   2.11176740e+01,\n",
       "           5.30523623e+02,   2.10183631e+00,   2.84501650e+01,\n",
       "           3.45636439e-01,   9.16231500e+00,   1.04729164e-01,\n",
       "           5.56374652e+00,   1.66423629e+01,   2.16145631e-02,\n",
       "           1.68294498e-02,   5.39595469e-03,   9.79343730e+01,\n",
       "           5.00096169e-01,   1.53177522e-02,   3.84655172e-03,\n",
       "           3.06782637e+00,   2.14584291e-02,   1.64749042e-02,\n",
       "           5.28333333e-03,   9.96700663e+01]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meanVals = mean(dataMat, 0)\n",
    "meanVals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[  1.64771044e+01,   6.81497692e+01,  -1.28140177e+01, ...,\n",
       "           2.77555756e-17,   1.99493200e-17,   1.70530257e-13],\n",
       "        [  8.13271044e+01,  -3.07102308e+01,   2.98748823e+01, ...,\n",
       "           3.62509579e-03,   7.16666667e-04,   1.08534434e+02],\n",
       "        [ -8.18428956e+01,   6.40897692e+01,  -1.41362177e+01, ...,\n",
       "           3.19250958e-02,   9.51666667e-03,  -1.68098663e+01],\n",
       "        ..., \n",
       "        [ -3.56428956e+01,  -1.16070231e+02,   5.75268229e+00, ...,\n",
       "          -7.87490421e-03,  -2.78333333e-03,  -5.61469663e+01],\n",
       "        [ -1.19532896e+02,   3.61597692e+01,  -2.35140177e+01, ...,\n",
       "           8.02509579e-03,   2.21666667e-03,  -6.17596635e+00],\n",
       "        [ -6.95328956e+01,  -4.50902308e+01,  -5.10291771e+00, ...,\n",
       "          -2.74904215e-04,  -7.83333333e-04,   3.81143337e+01]])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meanRemoved = dataMat - meanVals\n",
    "meanRemoved"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  5.39940056e+03,  -8.47962623e+02,   1.02671010e+01, ...,\n",
       "         -1.67440688e-02,  -5.93197815e-03,   2.87879850e+01],\n",
       "       [ -8.47962623e+02,   6.43649877e+03,   1.35942679e+01, ...,\n",
       "          1.21967287e-02,   2.32652705e-03,   3.37335304e+02],\n",
       "       [  1.02671010e+01,   1.35942679e+01,   8.63239193e+02, ...,\n",
       "         -7.59126039e-03,  -2.59521865e-03,  -9.07023669e+01],\n",
       "       ..., \n",
       "       [ -1.67440688e-02,   1.21967287e-02,  -7.59126039e-03, ...,\n",
       "          7.75231441e-05,   2.45865358e-05,   3.22979001e-01],\n",
       "       [ -5.93197815e-03,   2.32652705e-03,  -2.59521865e-03, ...,\n",
       "          2.45865358e-05,   8.21484994e-06,   1.04706789e-01],\n",
       "       [  2.87879850e+01,   3.37335304e+02,  -9.07023669e+01, ...,\n",
       "          3.22979001e-01,   1.04706789e-01,   8.81006310e+03]])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "covMat = cov(meanRemoved, rowvar=0)\n",
    "covMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "eigVals, eigVects = linalg.eig(mat(covMat))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[  5.34151979e+07   2.17466719e+07   8.24837662e+06   2.07388086e+06\n",
      "   1.31540439e+06   4.67693557e+05   2.90863555e+05   2.83668601e+05\n",
      "   2.37155830e+05   2.08513836e+05   1.96098849e+05   1.86856549e+05\n",
      "   1.52422354e+05   1.13215032e+05   1.08493848e+05   1.02849533e+05\n",
      "   1.00166164e+05   8.33473762e+04   8.15850591e+04   7.76560524e+04\n",
      "   6.66060410e+04   6.52620058e+04   5.96776503e+04   5.16269933e+04\n",
      "   5.03324580e+04   4.54661746e+04   4.41914029e+04   4.15532551e+04\n",
      "   3.55294040e+04   3.31436743e+04   2.67385181e+04   1.47123429e+04\n",
      "   1.44089194e+04   1.09321187e+04   1.04841308e+04   9.48876548e+03\n",
      "   8.34665462e+03   7.22765535e+03   5.34196392e+03   4.95614671e+03\n",
      "   4.23060022e+03   4.10673182e+03   3.41199406e+03   3.24193522e+03\n",
      "   2.74523635e+03   2.35027999e+03   2.16835314e+03   1.86414157e+03\n",
      "   1.76741826e+03   1.70492093e+03   1.66199683e+03   1.53948465e+03\n",
      "   1.33096008e+03   1.25591691e+03   1.15509389e+03   1.12410108e+03\n",
      "   1.03213798e+03   1.00972093e+03   9.50542179e+02   9.09791361e+02\n",
      "   8.32001551e+02   8.08898242e+02   7.37343627e+02   6.87596830e+02\n",
      "   5.64452104e+02   5.51812250e+02   5.37209115e+02   4.93029995e+02\n",
      "   4.13720573e+02   3.90222119e+02   3.37288784e+02   3.27558605e+02\n",
      "   3.08869553e+02   2.46285839e+02   2.28893093e+02   1.96447852e+02\n",
      "   1.75559820e+02   1.65795169e+02   1.56428052e+02   1.39671194e+02\n",
      "   1.28662864e+02   1.15624070e+02   1.10318239e+02   1.08663541e+02\n",
      "   1.00695416e+02   9.80687852e+01   8.34968275e+01   7.53025397e+01\n",
      "   6.89260158e+01   6.67786503e+01   6.09412873e+01   5.30974002e+01\n",
      "   4.71797825e+01   4.50701108e+01   4.41349593e+01   4.03313416e+01\n",
      "   3.95741636e+01   3.74000035e+01   3.44211326e+01   3.30031584e+01\n",
      "   3.03317756e+01   2.88994580e+01   2.76478754e+01   2.57708695e+01\n",
      "   2.44506430e+01   2.31640106e+01   2.26956957e+01   2.16925102e+01\n",
      "   2.10114869e+01   2.00984697e+01   1.86489543e+01   1.83733216e+01\n",
      "   1.72517802e+01   1.60481189e+01   1.54406997e+01   1.48356499e+01\n",
      "   1.44273357e+01   1.42318192e+01   1.35592064e+01   1.30696836e+01\n",
      "   1.28193512e+01   1.22093626e+01   1.15228376e+01   1.12141738e+01\n",
      "   1.02585936e+01   9.86906139e+00   9.58794460e+00   9.41686288e+00\n",
      "   9.20276340e+00   8.63791398e+00   8.20622561e+00   8.01020114e+00\n",
      "   7.53391290e+00   7.33168361e+00   7.09960245e+00   7.02149364e+00\n",
      "   6.76557324e+00   6.34504733e+00   6.01919292e+00   5.81680918e+00\n",
      "   5.44653788e+00   5.12338463e+00   4.79593185e+00   4.47851795e+00\n",
      "   4.50369987e+00   4.27479386e+00   3.89124198e+00   3.56466892e+00\n",
      "   3.32248982e+00   2.97665360e+00   2.61425544e+00   2.31802829e+00\n",
      "   2.17171124e+00   1.99239284e+00   1.96616566e+00   1.88149281e+00\n",
      "   1.79228288e+00   1.71378363e+00   1.68028783e+00   1.60686268e+00\n",
      "   1.47158244e+00   1.40656712e+00   1.37808906e+00   1.27967672e+00\n",
      "   1.22803716e+00   1.18531109e+00   9.38857180e-01   9.18222054e-01\n",
      "   8.26265393e-01   7.96585842e-01   7.74597255e-01   7.14002770e-01\n",
      "   6.79457797e-01   6.37928310e-01   6.24646758e-01   5.34605353e-01\n",
      "   4.60658687e-01   4.24265893e-01   4.08634622e-01   3.70321764e-01\n",
      "   3.67016386e-01   3.35858033e-01   3.29780397e-01   2.94348753e-01\n",
      "   2.84154176e-01   2.72703994e-01   2.63265991e-01   2.45227786e-01\n",
      "   2.25805135e-01   2.22331919e-01   2.13514673e-01   1.93961935e-01\n",
      "   1.91647269e-01   1.83668491e-01   1.82518017e-01   1.65310922e-01\n",
      "   1.57447909e-01   1.51263974e-01   1.39427297e-01   1.32638882e-01\n",
      "   1.28000027e-01   1.13559952e-01   1.12576237e-01   1.08809771e-01\n",
      "   1.07136355e-01   8.60839655e-02   8.50467792e-02   8.29254355e-02\n",
      "   7.03701660e-02   6.44475619e-02   6.09866327e-02   6.05709478e-02\n",
      "   5.93963958e-02   5.22163549e-02   4.92729703e-02   4.80022983e-02\n",
      "   4.51487439e-02   4.30180504e-02   4.13368324e-02   4.03281604e-02\n",
      "   3.91576587e-02   3.54198873e-02   3.31199510e-02   3.13547234e-02\n",
      "   3.07226509e-02   2.98354196e-02   2.81949091e-02   2.49158051e-02\n",
      "   2.36374781e-02   2.28360210e-02   2.19602047e-02   2.00166957e-02\n",
      "   1.86597535e-02   1.80415918e-02   1.72261012e-02   1.60703860e-02\n",
      "   1.49566735e-02   1.40165444e-02   1.31296856e-02   1.21358005e-02\n",
      "   1.07166503e-02   1.01045695e-02   9.76055340e-03   9.16740926e-03\n",
      "   8.78108857e-03   8.67465278e-03   8.30918514e-03   8.05104488e-03\n",
      "   7.56152126e-03   7.26347037e-03   7.31508852e-03   6.65728354e-03\n",
      "   6.50769617e-03   6.28009879e-03   6.19160730e-03   5.64130272e-03\n",
      "   5.30195373e-03   5.07453702e-03   4.47372286e-03   4.32543895e-03\n",
      "   4.22006582e-03   3.97065729e-03   3.75292740e-03   3.64861290e-03\n",
      "   3.38915810e-03   3.27965962e-03   3.06633825e-03   2.99206786e-03\n",
      "   2.83586784e-03   2.74987243e-03   2.31066313e-03   2.26782347e-03\n",
      "   1.82206662e-03   1.74955624e-03   1.69305161e-03   1.66624597e-03\n",
      "   1.55346749e-03   1.51278404e-03   1.47296800e-03   1.33617458e-03\n",
      "   1.30517592e-03   1.24056353e-03   1.19823961e-03   1.14381059e-03\n",
      "   1.13027458e-03   1.11081803e-03   1.08359152e-03   1.03517496e-03\n",
      "   1.00164593e-03   9.50024604e-04   8.94981182e-04   8.74363843e-04\n",
      "   7.98497545e-04   7.51612221e-04   6.63964303e-04   6.21097650e-04\n",
      "   6.18098606e-04   5.72611406e-04   5.57509231e-04   5.47002382e-04\n",
      "   5.27195078e-04   5.11487997e-04   4.87787872e-04   4.74249072e-04\n",
      "   4.52367689e-04   4.24431102e-04   4.19119025e-04   3.72489906e-04\n",
      "   3.38125455e-04   3.34002144e-04   2.97951371e-04   2.54815126e-04\n",
      "   2.84845901e-04   2.79038288e-04   2.77054476e-04   2.67962796e-04\n",
      "   2.29230595e-04   1.99245436e-04   1.90381389e-04   1.84497914e-04\n",
      "   1.77415682e-04   1.68160613e-04   1.63992030e-04   1.58025552e-04\n",
      "   1.54226003e-04   1.46890641e-04   1.46097433e-04   1.40079891e-04\n",
      "   1.35736724e-04   1.22704034e-04   1.16752515e-04   1.14080847e-04\n",
      "   1.04252870e-04   9.90265094e-05   9.66039062e-05   9.60766570e-05\n",
      "   9.16166345e-05   9.07003475e-05   8.60212633e-05   8.32654024e-05\n",
      "   7.70526079e-05   7.36470021e-05   7.24998304e-05   6.80209910e-05\n",
      "   6.68682698e-05   6.14500416e-05   5.99843175e-05   5.49918004e-05\n",
      "   5.24646954e-05   5.13403848e-05   5.02336263e-05   4.89288505e-05\n",
      "   3.43901592e-05   3.57776534e-05   4.51104475e-05   3.80307291e-05\n",
      "   3.94822849e-05   4.29823768e-05   4.14341562e-05   4.18869717e-05\n",
      "   2.98089202e-05   2.72388358e-05   2.42608885e-05   2.30962279e-05\n",
      "   2.27807559e-05   2.14440814e-05   1.96208174e-05   1.91217363e-05\n",
      "   1.88276186e-05   1.66549051e-05   1.46846459e-05   1.43753346e-05\n",
      "   1.39779892e-05   1.01021807e-05   1.02782990e-05   1.09258905e-05\n",
      "   1.13426750e-05   1.20295835e-05   1.21760519e-05   9.72678791e-06\n",
      "   9.64538292e-06   9.23630203e-06   8.93991857e-06   8.34247958e-06\n",
      "   7.36188587e-06   7.20354827e-06   6.69282814e-06   6.49477814e-06\n",
      "   5.91044556e-06   6.00244890e-06   5.67034892e-06   5.31392220e-06\n",
      "   5.09342484e-06   4.65422046e-06   4.45482133e-06   4.11265577e-06\n",
      "   3.48065950e-06   3.65202836e-06   3.77558985e-06   2.78847698e-06\n",
      "   2.66299627e-06   2.57492503e-06   2.39210232e-06   2.06298821e-06\n",
      "   2.00824521e-06   1.76373602e-06   1.58273269e-06   1.32211395e-06\n",
      "   1.49813697e-06   1.44003524e-06   1.42489429e-06   1.10002716e-06\n",
      "   9.01008863e-07   8.49881106e-07   7.62521870e-07   6.57641102e-07\n",
      "   5.85636641e-07   5.33937361e-07   4.16077215e-07   2.95575265e-07\n",
      "   3.33765858e-07   2.54744632e-07   2.20144574e-07   1.86314521e-07\n",
      "   1.77370966e-07   1.54794344e-07   1.47331687e-07   1.39738552e-07\n",
      "   1.04110969e-07   1.00786519e-07   9.38635093e-08   9.10853316e-08\n",
      "   8.71546331e-08   7.48338890e-08   6.06817433e-08   5.66479200e-08\n",
      "   4.57020631e-08   5.24576912e-08   2.89942624e-08   2.60449426e-08\n",
      "   2.10987989e-08   2.17618742e-08   1.75542293e-08   1.34637026e-08\n",
      "   1.27167437e-08   1.23258203e-08   1.04987507e-08   9.86367935e-09\n",
      "   8.49421534e-09   9.33428068e-09   7.42189501e-09   6.84633747e-09\n",
      "   6.46870539e-09   5.76455833e-09   5.01138131e-09   3.48686402e-09\n",
      "   2.91267187e-09   2.77880638e-09   1.73093458e-09   1.42391205e-09\n",
      "   1.16455052e-09   9.24977092e-10   1.11816002e-09   6.95073227e-10\n",
      "   6.13296256e-10   1.97062432e-10   1.80003559e-10   2.61913600e-10\n",
      "   5.27575583e-10  -3.87319727e-15   4.46215322e-15   6.99728293e-16\n",
      "   3.88041639e-18  -7.12116788e-18   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00\n",
      "   0.00000000e+00   0.00000000e+00]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "590"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(eigVals); len(eigVals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ -6.39070760e-04  -1.20314234e-04   1.22460363e-04 ...,   0.00000000e+00\n",
      "    0.00000000e+00   0.00000000e+00]\n",
      " [  2.35722934e-05  -6.60163227e-04   1.71369126e-03 ...,   0.00000000e+00\n",
      "    0.00000000e+00   0.00000000e+00]\n",
      " [  2.36801459e-04   1.58026311e-04   3.28185512e-04 ...,   0.00000000e+00\n",
      "    0.00000000e+00   0.00000000e+00]\n",
      " ..., \n",
      " [  2.61329351e-08  -6.06233975e-09   1.09328336e-09 ...,   0.00000000e+00\n",
      "    0.00000000e+00   0.00000000e+00]\n",
      " [  5.62597732e-09   5.96647587e-09   8.83024927e-09 ...,   0.00000000e+00\n",
      "    0.00000000e+00   0.00000000e+00]\n",
      " [  3.89298443e-04  -2.32070657e-04   7.13534990e-04 ...,   0.00000000e+00\n",
      "    0.00000000e+00   0.00000000e+00]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "590"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(eigVects); len(eigVects)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
